カスタム投稿タイプのアーカイブページにもdescriptionを入れる方法(Yoast)

Pocket

カスタム投稿タイプのDescriptionを入れる方法。どうやらYoast SEOプラグイン(ver 6.1.1)では、カスタム投稿タイプでdescriptionを入れても、それが反映されないみたい。
このアーカイブページはかなり有用な場合が多いので、SEO対策としても、是非descriptionを入れておきたい。
YoastのAPIはこちら:

WordPress SEO API Docs


これの、wpseo_metadesc hookを使う。
投稿タイプを定義するとき、register_post_type() のdescriptionを入れるので、それをarchive pageのdescriptionに入れるには以下をfunctions.php に追記:

add_filter( 'wpseo_metadesc', 'hoge_change_description', 10, 1 );
function hoge_change_description( $str ) {
    // if archive page
    if( is_archive() ){
        $queried_object = get_queried_object();
        $post_type = $queried_object->name;
        // check if this has description
        $obj = get_post_type_object( $post_type );
        if( !empty( $obj->description ) )
            return esc_html( $obj->description );
    }
    return $str;
}

 
まあ、作ったあとに、WP側でもできることがわかったけどね。。
WP管理画面→SEO→Titiles & Metas → Post Types
ただ、このhookを使って動的にdescriptionを変えられるのは良いかもね。