0

特定の投稿スクリプトを起動するために、関数内で現在の投稿がどの post_format であるかを検出するにはどうすればよいですか?

if (has_post_format( 'gallery' )){
    echo 'testing 123';
}

functions.php で試してみましたが、ギャラリーに設定されている投稿では何も起こりません。if の外側にエコー行を配置すると、(予想どおり) すべてのページの上部に表示されますが、has_post_format が機能しないのはなぜですか?

4

1 に答える 1

0

has_post_format() は、2 番目の引数である POST_ID を指定していない場合、ループ内でのみ機能します。ループ内にいない場合は、post_id を送信する必要があります。

functions.php からこれを行っているため、何らかの形で postID を取得する必要があります。この場合、URL に基づいて実行できます。そう、

$url = explode('?', 'http://'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
$postID = url_to_postid($url[0]);

これで、このように比較できます

has_post_format('gallery', $postID) { /** do your thing **/ }
于 2013-02-22T21:23:40.043 に答える