Je souhaite ajouter un nom de classe supplémentaire à mon comment template
(le wrapper div avant la publication elle-même), qui est indiqué dans functions.php. Le nom de classe dans functions.php est un champ supplémentaire dans la section de profil de mon utilisateur et je souhaite obtenir cette chaîne et l'ajouter en tant que nom de classe supplémentaire dans mon modèle de commentaire.
La chose que je veux ajouter: $cityofuser->user_city
La question est: comment je fais ça? Si j'utilise $classes[] = 'comment-author-' . sanitize_html_class(echo $cityofuser->user_city);
dans un modèle, cela ne fonctionnera pas. J'ai des erreurs comme syntax error, unexpected 'echo'
Modifier:
Dans mon formulaire de registre, les utilisateurs peuvent ajouter des informations dans un nouveau champ, en indiquant leur ville de résidence. Je souhaite obtenir la sortie de ce champ, en faire un nouveau nom de classe dans le modèle de commentaire et modifier l'arrière-plan des utilisateurs sur ce nom de classe. Donc, le custom field echo $cityofuser->user_city
que j'ai créé (dans functions.php) et ajouté à mes pages de registre est quelque chose que je souhaite utiliser dans tout mon site.
Je veux ajouter le nouveau nom de classe ici: <div id="comment-5" class="comment byuser comment-author-admin even thread-odd thread-alt depth-1">
Et après cela, également sur les poteaux. Ce doit être quelque chose comme get_post_author?=cityofuser=Montreal
ou quelque chose, mais je ne sais pas comment faire.
Vous devriez envisager de vous connecter aux filtres comment_class()
et post_class()
, si votre thème le soutient.
comment_class
:Nous pouvons ajouter le filtre suivant:
/**
* Add a custom comment class, based on a given comment author's user meta field.
*
* @see http://wordpress.stackexchange.com/a/170443/26350
*/
add_filter( 'comment_class', function( $classes, $class, $comment_id, $post_id ) {
// Custom user meta key:
$key = 'city'; // <-- Edit this to your needs!
// Fetch the comment object:
$comment = get_comment( $comment_id );
// Check if the comment author is a registered user:
if ( ! is_null( $comment ) && $comment->user_id > 0 )
{
// Check for the custom user meta:
if( '' !== ( $value = get_user_meta( $comment->user_id, $key, true ) ) )
$classes[] = sanitize_html_class( $value );
}
return $classes;
}, 10, 4 );
Exemple de sortie:
<li class="comment byuser comment-author-someuser bypostauthor
odd alt depth-2 reykjavik" id="li-comment-78">
<article id="comment-78" class="comment">
où la reykjavik
a été ajoutée en tant que méta utilisateur de la ville , pour l'auteur du commentaire donné.
post_class
:De même pour le filtre post_class
, on peut utiliser:
/**
* Add a custom post class, based on a given post author's user meta field.
*
* @see http://wordpress.stackexchange.com/a/170443/26350
*/
add_filter( 'post_class', function( $classes, $class, $post_id ) {
// Custom user meta key:
$key = 'city'; // <-- Edit this to your needs!
// Fetch the comment object:
$post = get_post( $post_id );
if( ! is_null( $post ) && $post->post_author > 0 )
{
// Check for the custom user meta:
if( '' !== ( $value = get_user_meta( $post->post_author, $key, true ) ) )
$classes[] = sanitize_html_class( $value );
}
return $classes;
}, 10, 3 );
Voici une version plus courte qui fonctionne dans la boucle:
/**
* Add a custom post class, based on a given post author's user meta field.
*
* @see http://wordpress.stackexchange.com/a/170443/26350
*/
add_filter( 'post_class', function( $classes, $class, $post_id ) {
// Custom user meta key:
$key = 'city'; // <-- Edit this to your needs!
// Check for the custom user meta:
if( '' !== ( $value = get_the_author_meta( $key ) ) )
$classes[] = sanitize_html_class( $value );
return $classes;
});
Exemple de sortie:
<article id="post-1"
class="post-1 post type-post status-publish format-standard
hentry category-uncategorized reykjavik">
où la reykjavik
a été ajoutée en tant que dernière classe de publication, en fonction de notre filtre ci-dessus.