J'ai cette fonction dans mon thème, ce que je veux, c'est afficher le nom de l'auteur uniquement pour la catégorie sélectionnée (disons la catégorie id 90). Aucun nom d'auteur ne doit être affiché pour le reste des catégories.
Je crois que> in_category peut le faire. J'ai aussi essayé quelques fonctions mais pas de chance car je ne suis pas bon en codage.
Merci d'avance pour votre aide :)
Voici la fonction
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;
}
}
Oui, c’est la ligne que vous devez modifier et vous devez vérifier si le message en cours appartient à la catégorie spécifiée. Donc, vous pouvez remplacer cette ligne par ce code et il devrait faire l'affaire:
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 = '';
}
Si cela ne fonctionne pas, vous avez soit un mauvais ID de catégorie, soit l'objet post n'est pas correctement défini à ce stade (c'est-à-dire que vous n'êtes pas dans la boucle).
Remarque: vous n'avez pas besoin d'utiliser l'ID de catégorie, vous pouvez utiliser le slug ou le nom si vous voulez que le code soit plus lisible.