私は彼らのプロフィールページ(author.php)に著者のコメントを表示しようとしています、しかし私が試みた両方のコードは皆のコメントを表示するようです。また、2番目のコードは特定のコメントにリンクすることを想定していますが、代わりに何もしません。また、コメントIDはすでにコメント出力に追加されており、正常に印刷されます。任意の助けは大歓迎です。
// Method 1
<ul class="authpcom">
<?php
$author_email = get_the_author_meta( 'user_email' );
$args = array(
'author_email' => $author_email
);
$comments = get_comments($args);
foreach($comments as $comment) :
echo('<a href=" ' . get_permalink($comment->post_ID) . ' " rel="external nofollow" title=" ' . $title . ' ">' .$title . '</a><br />' . $comment->comment_date . '<br /><li>' . $comment->comment_content . '</li>');
endforeach;
?>
</ul>
// Method 2
<?php $comments = get_comments(); ?>
<ul id="recent_comments">
<?php foreach ($comments as $comment) { ?>
<li><p><strong><?php
$title = get_the_title($comment->comment_post_ID);
echo get_avatar( $comment, '45' );
echo strip_tags($comment->comment_author); ?></strong> commented on <a href="<?php echo get_permalink($comment->comment_post_ID); ?>#comment-<?php echo $comment->comment_ID; ?>" rel="external nofollow" title="<?php echo $title; ?>"> <?php echo $title; ?></a>: <?php echo wp_html_excerpt( $comment->comment_content, 45 ); ?> (...)</p></li>
<?php } ?>
</ul>
コメント出力部に使用 -
$comment->comment_ID
object(WP_User)#345(7){["data"] => object(stdClass)#344(10){["ID"] => string(1) "2" ["user_login"] => string( 6) "agent1" ["user_pass"] => string(34) "$ P $ BXUSPFSBfmyIrjZ2YUnbIs1GwjkdH50" ["user_nicename"] =>文字列(6) "agent1" ["user_email"] => string(19) homekast.com "[" user_url "] =>文字列(0)" "[" user_registered "] =>文字列(19)" 2015-07-25 10:33:27 "[" user_activation_key "] =>文字列(0) ) "" ["user_status"] =>文字列(1) "0" ["display_name"] =>文字列(9) "John Paul"} ["ID"] => int(2)["caps"] = > array(1){["agent"] =>ブール値(true)} ["cap_key"] =>文字列(15) "tr_capabilities" ["role"] =>配列(1){[0] =>文字列(5) "agent"} ["allcaps"] =>配列(2){["read"] => bool(true)["agent"] => bool(true)} ["filter"] => NULL }
ここで使用する必要があるのは WP_Comment_Query() 関数です。
author.php
ページでは、次のようにして簡単に作者情報とIDを取得できます。
// get author info
$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
// set ID
$user_id = $curauth->ID;
それから、クエリ引数配列にユーザーIDを追加します。
$args = array(
'user_id' => $user_id, // comments by this user only
'status' => 'approve',
'post_status' => 'publish',
'post_type' => 'post'
);
そして最後に、wp_comment_query()
の引数に当たります。
// The Query
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
// Comment Loop
if ( $comments ) {
foreach ( $comments as $comment ) {
echo '<p>' . $comment->comment_content . '</p>';
}
} else {
echo 'No comments found.';
}
追加されたbonusとして、私はページングがwp_comment_query()
とどのように連携するのかを昔から調査し、 ここで良い解決策を提供しています 。それをうまく機能させるのは、ちょっと変なことでした。
編集:
著者IDを取得するためのより良い方法は(props @Pieter)を使うことです。
$user_id = get_queried_object_id();
1つ目の方法は、get_the_author_meta
の2番目のパラメーター、つまり作成者のIDが欠落していることです。
2番目の方法は、未定義の変数を使用していることです。このコードを確認してください。
// Method 1
<ul class="authpcom">
<?php
$queried_object = get_queried_object();
$author_email = get_the_author_meta( 'user_email', $queried_object->ID );
$args = array(
'author_email' => $author_email
);
$comments = get_comments($args);
foreach($comments as $comment) :
echo '<a href=" ' . get_permalink( $comment->comment_post_ID ) . ' " rel="external nofollow" title=" ' . get_the_title( $comment->comment_post_ID ) . ' ">' . get_the_title( $comment->comment_post_ID ) . '</a><br />' . $comment->comment_date . '<br /><li>' . $comment->comment_content . '</li>';
endforeach;
?>
</ul>
// Method 2
<?php
$comments = get_comments();
?>
<ul id="recent_comments">
<?php foreach ($comments as $comment) { ?>
<li>
<p>
<strong>
<?php
echo get_avatar( $comment->comment_author_email, '45' );
echo strip_tags($comment->comment_author);
?>
</strong>
commented on <a href="<?php echo get_permalink( $comment->comment_post_ID ); ?>#comment-<?php echo $comment->comment_ID; ?>" rel="external nofollow" title="<?php echo get_the_title( $comment->comment_post_ID ); ?>"> <?php echo get_the_title( $comment->comment_post_ID ); ?></a>: <?php echo wp_html_excerpt( $comment->comment_content, 45 ); ?> (...)
</p>
</li>
<?php } ?>
</ul>
編集: (09/05/2015)
// Method 1
<ul class="authpcom">
<?php
$authorID = get_queried_object_id();
$author_email = get_the_author_meta( 'user_email', $authorID );
$args = array(
'user_id' => $authorID,
);
$comments = get_comments($args);
if ( $comments ) {
foreach($comments as $comment) {
echo '<li><a href="' . get_permalink( $comment->comment_post_ID ) . '" rel="external nofollow" title="' . get_the_title( $comment->comment_post_ID ) . '">' . get_the_title( $comment->comment_post_ID ) . '</a><br>' . $comment->comment_date . '<br>' . $comment->comment_content . '</li>';
}
} else {
echo '<li>No Comments from this Author</li>';
}
?>
</ul>
究極のメンバー pluginを使ってこれを達成することができます。ユーザープロフィールで多くのことができるように思えますが、プロフィールページにユーザーのコメントを表示するのにも適しているように見えます。
ユーザープロフィールに投稿者のコメントとコメントを表示する