web-dev-qa-db-ja.com

投稿が特定のカテゴリに属している場合にのみ著者名を表示する方法

私は私のテーマにこの機能を持っています、私が欲しいのは選択したカテゴリーの著者名だけを表示することです(例えばカテゴリーID 90)。他のカテゴリには著者名を表示しないでください。

私は> in_categoryがこれを実現できると信じています。私はコーディングも得意ではないので私はまたある機能を試したが運が悪い。

ご協力ありがとうございます。

これが関数です

if (! function_exists('mom_posts_meta')) {
function mom_posts_meta ($class = '', $display = null) {
    $num_comments = get_comments_number(); // get_comments_number returns only a numeric value

if ( comments_open() ) {
    if ( $num_comments == 0 ) {
        $comments = __('No Comments', 'theme');
    } elseif ( $num_comments > 1 ) {
        $comments = $num_comments .' '. __(' Comments', 'theme');
    } else {
        $comments = __('1 Comment', 'theme');
    }
    $write_comments = '<a href="' . get_comments_link() .'">'. $comments.'</a>';
} else {
    //$write_comments =  __('Comments off', 'theme');
    $write_comments = '';
}
$author_link = esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) );
if (class_exists('userpro_api')) {
    global $userpro;
$author_link = $userpro->permalink(get_the_author_meta( 'ID' ));
}

$categories = get_the_category();
$separator = ', ';
$cats = '';
if($categories){
    foreach($categories as $category) {
        $cats.= '<a href="'.get_category_link( $category->term_id ).'" title="' . esc_attr( sprintf( __( "View all posts in %s", 'theme' ), $category->name ) ) . '">'.$category->cat_name.'</a>'.$separator;
    }
}
$tags = get_the_tags();
$post_tags = '';
if($tags){
    foreach($tags as $tag) {
        $post_tags.= '<a href="'.get_tag_link( $tag->term_id ).'" title="' . esc_attr( sprintf( __( "View all posts in %s", 'theme' ), $tag->name ) ) . '">'.$tag->name.'</a>'.$separator;
    }
}
    $output = '<div class="mom-post-meta '.$class.'">';
    $author = mom_option('post_meta-author') == 1 ? '<span class="author vcard" itemprop="author" itemscope itemtype="https://schema.org/Person">'.__('Posted By:', 'theme').' <span class="fn" itemprop="name"><a href="'.$author_link.'">'.get_the_author().'</a></span></span>': '';
    $date = mom_option('post_meta-date') == 1 ? '<span>'.__('on:', 'theme').' <time datetime="'.get_the_time('c').'" class="updated">'.get_mom_date_format().'</time></span>': '';
    //$date = mom_option('post_meta-date') == 1 ? '<span>'.__('The last Update:', 'theme').' <time datetime="'.get_the_time('c').'" itemprop="datePublished" class="updated">'. get_post_modified_time(mom_option('date_format')).'</time></span>': '';
    $cat = mom_option('post_meta-cat') == 1 ? '<span>'.__('In', 'theme').': '.trim($cats, $separator).'</span>': '';
    $tag = mom_option('post_meta-tag') == 1 ? '<span>'.__('Tags', 'theme').': '.trim($post_tags, $separator).'</span>': '';
    $comments = mom_option('post_meta-comments') == 1 ? '<span>'.$write_comments.'</span>': '';
    if ($display == 'date_comments') {
        $output .= $date.$comments;
    } else {
        $output .= $author.$date.$cat.$tag.$comments;
    }
    if(function_exists('the_views')) {
        $output .= '<span>'.__('Views:', 'theme').' '.the_views(false).'</span>';
    }
    $output .= get_mom_show_review_score();
    if (is_single()) {
        if (mom_option('post_meta-tools') == true) {
        $output .= '<div class="post-tools">';
        $output .= '<a href="javascript:window.print()" rel="nofollow" class="print"><i class="fa-icon-print"> </i>'.__('Print').'</a>';
        $output .= '<a href="mailto:?subject='.get_the_title().'&body='.get_the_title().' '.get_permalink().'" rel="nofollow" class="email"><i class="fa-icon-envelope"> </i>'.__('Email', 'theme').'</a>';
        $output .= '</div>';
        }
    }

    $output .= '</div>';
    echo $output;
}

}

1
Davood

はい、それはあなたが編集する必要がある行です、そしてあなたは現在の投稿があなたの指定されたカテゴリーの中にあるかどうかチェックして見る必要があります。それで、あなたはその行をこのコードで置き換えることができます、そしてそれはトリックをするべきです:

if(in_category(90)) {
    $author = mom_option('post_meta-author') == 1 ? '<span class="author vcard" itemprop="author" itemscope itemtype="https://schema.org/Person">'.__('Posted By:', 'theme').' <span class="fn" itemprop="name"><a href="'.$author_link.'">'.get_the_author().'</a></span></span>': '';
} else {
    $author = '';
}

それでもうまくいかない場合は、カテゴリIDが間違っているか、この時点で投稿オブジェクトが正しく設定されていません(つまり、ループに入っていません)。

また、注意してください:あなたはそれをより読みやすいコードにしたい場合は、カテゴリIDを使用する必要はありません、あなたはスラッグや名前を使用することができます。

2