【WordPress】IDあるいはスラッグを指定して、特定ページのコンテンツを取得する

概要

投稿IDかスラッグを指定するとそのページを表示してくれるショートコードです。
以前どこかで見たものを思い出して作成しました。

【参考サイト】
https://masshiro.blog/shortcode-insert/

内容

function.phpに記入します。

/**
 * スラッグがIDを指定してページの本文を取得するショートコード。
 */
function shortcode_get_page($atts) {
    //post_typeは指定されていなければ固定ページ
    extract(shortcode_atts(array(
        'id' => null,
        'slug' => null,
        'post_type' => 'page',
    ), $atts));

    //スラッグ指定の場合
    if(!is_null($slug)){
        $get_page_id = get_page_by_path($slug);
        if(get_post($get_page_id)!=null){
            $id = $get_page_id->ID;
        }
    }

    //id指定の場合
    if(is_null($id)){
        return '';
    }else{
        //データ取得
        if(get_post($id)!=null){
            return wpautop(do_shortcode(get_post($id)->post_content));
        }
        return '';
    }
}
add_shortcode('get_page', 'shortcode_get_page');

[get_page id=投稿ID slag=スラッグ名を書く post_type=pageやpost、カスタム投稿も指定できる、省略可能 ]
という形で使えます。idとslagはどちらか書いてあればOKです。

おわり。

タイトルとURLをコピーしました