0

「メンバーリソース」と呼ばれるカスタム投稿タイプを作成しました。このCPTの下の投稿には、カテゴリやタグなどのいくつかの分類法があります。

タグ="多様性"カテゴリ="ガイダンス"

次のURLに移動すると:

www.domain.com/tags/diversity

www.domain.com/tags/guidance

投稿は表示されません。

CPT関数でpublic=>trueを設定しましたが。

ただし、メンバーリソースのアーカイブページにアクセスすると投稿が表示されるため、表示されますが、分類法でフィルタリングすると表示されません。

アップデート -

次のコードをfunctions.phpファイルに追加すると、member-resources CPTをそれぞれCategoryページとTagsページに表示できますが、WordPressバックエンドの[Pages]タブと投稿などの他のすべてのコンテンツタブに表示されるようになりました。私のページと投稿を上書きし、メンバーリソースの投稿のみを表示しています。

add_action( 'pre_get_posts', 'add_my_custom_post_type' );

 function add_my_custom_post_type( $query ) {
if ($query->is_main_query()) 
    $query->set( 'post_type', array( 'member-resources' ) );
return $query;
} 
4

1 に答える 1

1

あなたのコードは正しいように見えます。しかし、WordPressのクエリの多くにCPTメンバーリソースを含めています。is_main_queryは「ループ」を意味すると思います。

したがって、これをタグアーカイブページでの実行のみに制限する必要があります。

次のコードはワードプレスサイトからのものです

add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' );
function foo_modify_query_exclude_category( $query ) {
    if ( ! is_admin() && is_main_query() && ! $query->get( 'cat' ) )
        $query->set( 'cat', '-5' );
}

同様のことを行う必要がありますが、「タグ」ページにいるかどうかを判断します。

于 2013-01-23T18:49:13.810 に答える