web-dev-qa-db-ja.com

Notice:未定義のインデックス:suppress_filters

私は現在取り組んでいるテーマについていくつかのバグを取り除いています、そして誰かが私を助けてくれることを願っています。

私は、Justin Tadlockがブログページにカスタム投稿タイプを表示するために、そしてwp-debugをtrueに設定して作成したこの機能を使用しました。Notice:Undefined index:suppress_filtersメッセージを受け取ります。

コードは次のとおりです。

// Custom Post Type for the public blog posts to show on Index or blog page
add_filter( 'pre_get_posts', 'my_get_posts' );

function my_get_posts( $query ) {

if ( ( is_home() && false == $query->query_vars['suppress_filters'] ) || is_feed() )
$query->set( 'post_type', array( 'news', 'attachment' ) );

return $query;
}

誰かが助けることができればそれは素晴らしいことです。ありがとう

1
Chris

$query->query_vars['suppress_filters']が設定されていない場合は、そのメッセージが表示されます。

false == $query->query_vars['suppress_filters'] )の代わりにempty($query->query_vars['suppress_filters'])を使用するか、この$query->get('suppress_filters')のようにfalse == $query->get('suppress_filters')を使用してください。

テストされていませんが(最低限のテストしかされていません)、どちらでも同じ結果が通知なしに表示されるはずです。

2
s_ha_dum

$query->query_vars['suppress_filters']は設定されていないようです。これを試して:

// Custom Post Type for the public blog posts to show on Index or blog page
add_filter( 'pre_get_posts', 'my_get_posts' );

function my_get_posts( $query ) {

    if ( 
        ( is_home() && (
            isset( $query->query_vars['suppress_filters'] ) && 
            false == $query->query_vars['suppress_filters']  
            )
        ) ||
        is_feed() 
    ) {
        $query->set( 'post_type', array( 'news', 'attachment' ) );
    }

    return $query;
}

falseかどうかを確認する前に、実際に$query->query_vars['suppress_filters']が設定されていることを確認するためのチェックを追加しました。 (また、読みやすくするためにif()ステートメントを分割しました(すべての()を正しく一致させたと思います)。

0
Pat J