私はid=22
でページのためにポップアップでコメントを見せたいです。
これは、クリックするとポップアップが開くアンカーです。
<a class="button button-small button-line-light comment-popup"
href="<?php echo get_stylesheet_directory_uri();?>/comments-detail.php">View All</a>
私がcomments-detail.php
にプレーンHTMLを持っている場合、popupはそのHTMLを表示します。
しかし、id=22
のページcomments-detail.php
のコメントリストを取得しようとすると、次の簡単なコードが表示されます。
<?php
$args = array(
'post_id' => 22
);
$comments = get_comments( $args );
?>
それから私はエラーが出ます:
未定義の関数への呼び出し
get_comments()
私は何をしているのですか、それとも私のアプローチはまったく間違っていますか?
あなたはここで車輪を再発明しています;-)
あなたはこのアプローチでWordPressを迂回しているので、それはエラーメッセージを説明します。
テーマディレクトリ内のカスタムファイルにアクセスすると、notが自動的にWordPressコアをロードします。
これはすでにWordPressコアでサポートされています。
あなたは comments_popup_link()
と comments_popup_script()
をチェックアウトするべきです。
一般的に、与えられた記事について、あなたはすべてのコメントを得ることができます。
example.tld/?comments_popup=123
123
はsome投稿IDです。
あなた自身のバージョンのcomments-popup.php
ファイルを現在のテーマディレクトリに置くことで、デフォルトのコメントポップアップテンプレートを上書きすることができます。
デフォルトのものは/wp-includes/theme-compat/comments-popup.php
にあります。
コアでは、私たちはこの説明を得ました:
- テンプレートのパスは 'comments_popup_template'フックでフィルタリングできます。
しかしそれは正しくありません。テンプレートは、
$template = get_query_template( 'comments_popup', array( 'comments-popup.php' ) );
get_query_template()
内では、次のようなクリーニングがあります。
$type = preg_replace( '|[^a-z0-9-]+|', '', $type );
ここで、タイプcomments_popup
はcommentspopup
に変更されています。
したがって、正しいフィルタは次のとおりです。
add_filter( 'commentspopup_template', function( $template )
{
return $template;
} );
正しい型はcomments-popup
ではなくcomments_popup
であることを意図していたようです。しかし、それではアンダースコアが削除された理由を疑問に思うことができます。詳しくはチケット #21213 をご覧ください。
私はここで #32989 のインラインドキュメントに関してコアTracチケットを提出しました。