web-dev-qa-db-ja.com

タグ付きのカスタム投稿タイプ

私の理解するところでは、カスタム投稿タイプは投稿とタグを共有することもできます。

タグを作成し、ブログ投稿とカスタム投稿タイプに適用しました。

タグをクリックしてもブログの投稿のみが返されます。

登録投稿タイプに次の行があります。

'taxonomies' => array('post_tag')

しかし、私はまた関数の外にこれを持っています

register_taxonomy_for_object_type('post_tag', 'projects');

彼らは同じことをしていますか?また、なぜそのタグのカスタム投稿を返さないのでしょうか。

2
user24554

はい、両方の代入は同じですが、post_tagアーカイブはデフォルトでのみ投稿タイプpostを使用しています。心配しないでください、あなたのためのフックがあります:pre_get_posts

ページのタグを使った例:

// register tags for pages
add_action( 'wp_loaded', 'wpse_75297_register_tags_for_pages' );

function wpse_75297_register_tags_for_pages()
{
    register_taxonomy_for_object_type( 'post_tag', 'page' );
}

// add post type 'page' to tax query
add_filter( 'pre_get_posts', 'wpse_75297_add_pages_to_tax_query' );
function wpse_75297_add_pages_to_tax_query( $query )
{
    if ( ! is_main_query() or ! is_tag() )
        return $query;

    $query->set('post_type', array('page','post'));

    return $query;
}

投稿の種類が正しく入力されていることを確認してください。投稿タイプがprojectの場合、他のフィルタでprojectsを使用することはできません。

1
fuxia