首页 > 解决方案 > 获取术语元中具有特定选项的所有标签

问题描述

我的一些标签有一些自定义term meta,我正在用这个函数保存那个元:

add_action ( 'edit_term', 'save_termmeta_tag');
   // save extra category extra fields callback function
function save_termmeta_tag( $term_id ) {
    if ( isset( $_POST['Tag_meta'] ) ) {
        $t_id = $term_id;
        $tag_meta = get_option( "tag_$t_id");
        $tag_keys = array_keys($_POST['Tag_meta']);
            foreach ($tag_keys as $key){
            if (isset($_POST['Tag_meta'][$key])){
                $tag_meta[$key] = $_POST['Tag_meta'][$key];
            }
        }
        //save the option array
        update_option( "tag_$t_id", $tag_meta );
    }
}

现在,我想获取所有带有特定选项的标签,例如“ channel”。

这可能吗,怎么做?

标签: wordpresstagsmetadata

解决方案


function get_term_with_option($opt) {
    $terms = array();
    // load all options
    $options = wp_load_alloptions();
    foreach($options as $k=>$v) {
        // find keys with prefix `tag_`
        if (strpos($k, 'tag_') === 0) {
            $v = maybe_unserialize($v);
            // check if has a meta key $opt
            if (is_array($v) && array_key_exists($opt, $v)) {
                $term = get_term(intval(str_replace('tag_', '', $k)));
                if (!is_wp_error($term)) {
                    $terms[] = $term;
                }
            }
        }
    }
    return $terms;
}

print_r(get_term_with_option('channel'));

推荐阅读