https://broadly.vice.com/en_usに投稿が複数のカテゴリに属する場合は、それらは単一のプライマリカテゴリを表示します。ポストが多くのカテゴリに属していて、Genesis post_metaにプライマリカテゴリを表示したい場合
どのようにジェネシス子テーマでpost_metaに表示する主なものをカテゴリ、ポストごとのポストに、選ぶことができますか?
https://broadly.vice.com/en_usに投稿が複数のカテゴリに属する場合は、それらは単一のプライマリカテゴリを表示します。ポストが多くのカテゴリに属していて、Genesis post_metaにプライマリカテゴリを表示したい場合
どのようにジェネシス子テーマでpost_metaに表示する主なものをカテゴリ、ポストごとのポストに、選ぶことができますか?
この記事の時点では、Trunk version of CMB2(ないプラグイン)をインストールします。この回答のバックアップのための
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');
これは簡単な解決方法です。
SEO Yoastフリープラグインhttps://wordpress.org/plugins/wordpress-seo/を使用してください。投稿に複数のカテゴリが割り当てられている場合は、カテゴリをプライマリにするのに役立ちます。
プライマリ猫の選択のためのがあなたの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;
}
+ 1何らかの理由で、この質問をした人がプラグインに頼ることを望まなかった。彼は別のSEOプラグインを使用するかもしれませんが、他のプラグインはYoastのようにそれに追いついていません... – Christina