私の理解するところでは、カスタム投稿タイプは投稿とタグを共有することもできます。
タグを作成し、ブログ投稿とカスタム投稿タイプに適用しました。
タグをクリックしてもブログの投稿のみが返されます。
登録投稿タイプに次の行があります。
'taxonomies' => array('post_tag')
しかし、私はまた関数の外にこれを持っています
register_taxonomy_for_object_type('post_tag', 'projects');
彼らは同じことをしていますか?また、なぜそのタグのカスタム投稿を返さないのでしょうか。
はい、両方の代入は同じですが、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
を使用することはできません。