Functions.phpに記述されている私のcomment template
(投稿自体の前のdivラッパー)にクラス名を追加したいと思います。 functions.phpのクラス名は私のユーザーのプロフィールセクションの追加のフィールドであり、私はその文字列を取得して私のコメントテンプレートの追加のクラス名として追加したいと思います。
追加したいこと:$cityofuser->user_city
問題は、どうすればよいのかということです。テンプレートで$classes[] = 'comment-author-' . sanitize_html_class(echo $cityofuser->user_city);
を使ってもうまくいきません。 syntax error, unexpected 'echo'
のようなエラーが出ます
編集:
私の登録フォームでは、人々は彼らが住んでいる都市を述べる新しいフィールドに情報を追加することができます。私はこのフィールドの出力を取得したい、コメントテンプレートの新しいクラス名にしたいこのクラス名で。それで私が(functions.phpに)作ってレジスタページに追加したcustom field echo $cityofuser->user_city
は私のサイト全体で使いたいものです。
ここに新しいクラス名を追加したいです。<div id="comment-5" class="comment byuser comment-author-admin even thread-odd thread-alt depth-1">
そしてこれが行われた後、また投稿に。それはget_post_author?=cityofuser=Montreal
か何かのようなものでなければなりません、しかし私はそれをする方法の手がかりを持っていません。
あなたのテーマであれば、 comment_class()
と post_class()
フィルタにフックすることを検討するべきですそれをサポートしています。
comment_class
フィルタを使う:以下のフィルタを追加することができます。
/**
* 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 );
出力例:
<li class="comment byuser comment-author-someuser bypostauthor
odd alt depth-2 reykjavik" id="li-comment-78">
<article id="comment-78" class="comment">
与えられたコメントの作者に対して、reykjavik
がcityユーザーメタとして追加されています。
post_class
フィルタを使う:post_class
フィルタについても同様に使用できます。
/**
* 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 );
これは、ループ内で機能する短いバージョンです。
/**
* 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;
});
出力例:
<article id="post-1"
class="post-1 post type-post status-publish format-standard
hentry category-uncategorized reykjavik">
上記のフィルタに基づいて、最後の投稿クラスとしてreykjavik
が追加されています。