ワードプレスの投稿(もしくは固定ページのID)を取得するPHPコードをご紹介いたします。


方法1 ループ内でワードプレスの投稿(もしくは固定ページのID)を取得する

ワードプレスのループ内(while(have_posts()))でIDを取得するコードは下記のようになります。

while(have_posts()):the_post();
    $post_id = get_the_ID();
endwhile;

get_the_ID()関数で簡単に取得可能です。

方法2 ループ外でワードプレスの投稿(もしくは固定ページのID)を取得する

この場合いくつか方法がございます。

URLから取得する方法

$url = !empty(get_the_permalink()) ? get_the_permalink() : (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$permalink = strtok($url, '?');
$post_id = url_to_postid($url);

$postから取得する方法

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

スラグから取得する方法
※slug/childslug のところは、取得したいスラグ名(親子関係も必須)、post_type のところは固定ページの場合はpage,投稿の場合はpost,カスタム投稿の場合はそのタームになります

$post = get_page_by_path( '"slug/childslug"', OBJECT, 'post_type' );
$post_id = $post->ID;

get_queried_object_id()を使う方法

global $wp_query;
$post_id = $wp_query->get_queried_object_id();

テーマの個所や状況によって取得できないものもございますのでいろいろとお試しください。

WordPress ワードプレスのエラーの修正、復旧、テーマのカスタマイズのご依頼ご相談はワードプレスドクターまでお気軽にお送りください