2017-01-30 4 views

答えて

0

この記事の時点では、Trunk version of CMB2(ないプラグイン)をインストールします。この回答のバックアップのための

enter image description here

See See Gist

functions.phpの中に次のものを入れてください。オープニングPHPを追加しないでください。多くの場所でyourprefix_を変更してください。

<?php 
//don't add 

/** 
* 
* Create Metabox and Primary Category Select Field 
* Requires CMB2 TRUNK branch NOT the plugin from the repo 
* Install CMB2-trunk.zip via plugin interface or incorporate in your theme, read their docs 
* https://github.com/WebDevStudios/CMB2/branches 
* 
*/ 
function yourprefix_primary_category_selection() { 

    $prefix = 'yourprefix_'; 

    $cmb_demo = new_cmb2_box(array(
     'id'   => $prefix . 'metabox', 
     'title'   => esc_html__('Primary Category', 'yourtextdomain'), 
     'object_types' => array('post',), 
      'context'  => 'side', 
     'priority'  => 'low', 
     'show_names' => false, 
    )); 

    $cmb_demo->add_field(array(
     'name'   => esc_html__('Choose Primary Category', 'yourtextdomain'), 
     'desc'   => esc_html__('Choose primary category for display in post_meta', 'yourtextdomain'), 
     'id'    => $prefix . 'category_list', 
     'taxonomy'  => 'category', 
     'type'   => 'taxonomy_select', 
    ));  

} 
add_action('cmb2_admin_init', 'yourprefix_primary_category_selection'); 


/** 
* 
* Add Primary to [post_categories] shortcode replacing the genesis shortcode of the same name 
* 
*/ 
function yourprefix_post_primary_category_shortcode($atts) { 

    //* get our CMB2 field and category stuff 
    $prefix  = 'yourprefix_'; 
    $primary_cat = get_post_meta(get_the_ID(), $prefix . 'category_list', true); 
    $category_id = get_cat_ID($primary_cat); 
    $category_link = get_category_link($category_id); 
    $category_name = get_cat_name($category_id); 

    $defaults = array(
     'sep' => ', ', 
     'before' => __('Filed Under: ', 'yourtextdomain'), 
     'after' => '', 
    ); 

    $atts = shortcode_atts($defaults, $atts, 'post_categories'); 

    //* fallback to the standard array if the choice in the primary metabox is not set 
    if(empty($primary_cat)) { 
     $cats = get_the_category_list(trim($atts['sep']) . ' '); 
    } else { 
     $cats = '<a href="' . $category_link . '">' . $category_name . '</a>'; 
    } 

    //* Do nothing if no cats 
    if (! $cats) { 
     return ''; 
    } 

    if (genesis_html5()) 
     $output = sprintf('<span %s>', genesis_attr('entry-categories')) . $atts['before'] . $cats . $atts['after'] . '</span>'; 
    else 
     $output = '<span class="categories">' . $atts['before'] . $cats . $atts['after'] . '</span>'; 

    return apply_filters('genesis_post_categories_shortcode', $output, $atts); 

} 
add_shortcode('post_categories', 'yourprefix_post_primary_category_shortcode'); 
2

これは簡単な解決方法です。

SEO Yoastフリープラグインhttps://wordpress.org/plugins/wordpress-seo/を使用してください。投稿に複数のカテゴリが割り当てられている場合は、カテゴリをプライマリにするのに役立ちます。

プライマリ猫の選択のための

を参照してくださいプラグインのインターフェイス: その後Select Primary Category for the post

があなたのWPのテーマで機能ファイルに以下の機能を持っていると、あなたのようにどこでも、カテゴリ名をエコーするために使用することができます:<?php echo taxo_primary_term_name; ?>

// wp seo yoast get primary category name 

function taxo_primary_term_name($taxo){ 

    $wpseo_primary_term = new WPSEO_Primary_Term($taxo, get_the_ID()); 
    $wpseo_primary_term = $wpseo_primary_term->get_primary_term(); 

    return $wpseo_primary_term = get_term($wpseo_primary_term)->name; 
} 
+0

+ 1何らかの理由で、この質問をした人がプラグインに頼ることを望まなかった。彼は別のSEOプラグインを使用するかもしれませんが、他のプラグインはYoastのようにそれに追いついていません... – Christina

関連する問題