Примечание: Неопределенный индекс: подавлять фильтры


Я занимаюсь устранением ошибок в теме, над которой работаю, и надеюсь, что кто-нибудь сможет мне помочь, пожалуйста.

Я использовал эту функцию, созданную Джастином Тэдлоком, для отображения пользовательских типов записей на странице блога, и при установке wp-debug в значение true я получаю уведомление: Неопределенный индекс: сообщение 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;
}

Если бы кто-нибудь мог помочь, это было бы здорово. Спасибо

Author: Chris, 2013-06-06

2 answers

Если $query->query_vars['suppress_filters'] не задано, вы получите это сообщение.

Используйте empty($query->query_vars['suppress_filters']) вместо false == $query->query_vars['suppress_filters'] ) или используйте $query->get('suppress_filters') вот так false == $query->get('suppress_filters').

Непроверенный (минимально протестированный), но я считаю, что любой из них должен дать вам те же результаты за вычетом уведомления.

 2
Author: s_ha_dum, 2013-06-06 16:14:29

Звучит так, как будто $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;
}

Я добавил проверку, чтобы убедиться, что $query->query_vars['suppress_filters'] действительно установлен, прежде чем вы проверите, установлен ли он false. (Также я разделил инструкцию if() для облегчения чтения. (Я думаю, что я правильно сопоставил все ( и ).)

 0
Author: Pat J, 2013-06-06 16:15:35