[WordPress] pre_get_posts() は、ワードプレスでの作業からページを停止します

スポンサーリンク

Question

をカスタム、320 のブートス トラップの WP テーマに基づいた、ワードプレスのサイトをある

投稿ビデオのタイプです。完璧に動作する主要なループ内でカスタム ポスト タイプを含める pre_get_posts() を使用しています

以下の関数を使用して、ページへのリンクを停止作業、404 ページにリダイレクトする

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
    if ( (!is_admin()) && $query->is_main_query() )
        $query->set( 'post_type', array( 'post', 'video' ) );
    return $query;
}

機能ファイルに行ったすべての変更を分離しました。このクエリなしのページ リンクは正常に動作します

感謝任意のヘルプです

答え

使用していない素晴らしいですが、メイン ・ クエリに作用および admin ページをチェックしています。欠落している部分はアーカイブにしていることを確認します

、元のクエリを投稿する投稿タイプとビデオを設定することを言っているに関係なく現時点で。ページにアクセスするクエリに変更されますページからポスト + ビデオ、404 の結果

以下をしようと:

function add_my_post_types_to_query( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {

        // Check we're on an archive page.
        if ( $query->is_archive ) { 
            $query->set( 'post_type', array( 'post', 'video' ) );
        }

    }

    return $query;
}
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

http://stackoverflow.com/questions/27771566/pre-get-posts-stops-pages-from-working-in-wordpress

スポンサーリンク

Leave a Reply