web-dev-qa-db-ja.com

$ post_idとは何ですか?それはwordpressのグローバル変数ですか?

$ post_id single.phpの投稿をエコーし​​ながらそれをどのように使用できますか?

それはグローバル変数ですか?

3
Nimesh

いいえ、$post_idはグローバル変数ではありません。 WordPressがここで作成するグローバル変数のリストを見ることができます: https://codex.wordpress.org/Global_Variables

$post_idは、投稿IDを含む変数の単なる一般的な命名規則です。チュートリアルとサンプルコードでは、値は投稿IDであることが期待されることを示していますが、それでもコード内の別の場所で値を設定する必要があります。

The Loop の内側にいる場合は、現在のページのIDを取得するか、$post_id = get_the_ID()を使用してループに投稿できます。あなたがThe Loopの外にいて、現在照会されている投稿またはページのIDを取得したい場合は$post_id = get_queried_object_id()を使用できます。

投稿IDを取得するもう1つの方法は、フックコールバックです。たとえば、 post_thumbnail_size フックでは、コールバックは2番目の引数として投稿IDを受け取ります。

function wpse_299132_post_thumbnail_size( $size, $post_id ) {
    return $size;
}
add_filter( 'wpse_299132_post_thumbnail_size', 'wpse_299132_post_thumbnail_size', 10, 2 );

しかし、それは単に変数が何を含んでいるのかを明確にするためにドキュメンテーションで使われている名前です。あなたはそれをあなたが好きなものと呼ぶことができます。これも有効です、例えば:

function wpse_299132_post_thumbnail_size( $size, $myPostId ) {
    return $size;
}
add_filter( 'wpse_299132_post_thumbnail_size', 'wpse_299132_post_thumbnail_size', 10, 2 );

$myPostIdは2番目の引数なので、投稿IDを含みます。しかし、あなたがそれを呼ぶものは問題ではありません。

6
Jacob Peattie

$ post_idはグローバル変数ではありません。 $ postはグローバル変数です。あなたが使用することができます

global $post;
$post_id = $post->ID;