如何修复此 "Undefined index: post_type" 错误?

How to fix this "Undefined index: post_type" error?

我收到这个错误:

Notice: Undefined index: post_type in /opt/bitnami/apps/wordpress/htdocs/wp-content/themes/porto-child/functions.php on line 225

第 225 行对应于以下代码中的 switch ( $query->query_vars['post_type'] )

// Set Number of Custom Post Type Displayed Per Page

function set_posts_per_page_for_haivision_custom_post_type($query)
{
    switch ( $query->query_vars['post_type'] )
    {
        case 'press_release':  
            $query->query_vars['posts_per_page'] = -1;
            break;

        case 'video_portal':  
            $query->query_vars['posts_per_page'] = -1;
            break;

        default:
            break;
    }
    return $query;
}

if( !is_admin() )
{
    add_filter( 'pre_get_posts', 'set_posts_per_page_for_haivision_custom_post_type' );
}

有人能帮忙吗?

post_type 并不总是在 WP 查询中使用,您可以将 switch 语句包装在 if 中以检查其存在:

function set_posts_per_page_for_haivision_custom_post_type($query)
{
    if( isset( $query->query_vars['post_type'] ) )
    {
        switch ( $query->query_vars['post_type'] )
        {
            case 'press_release':  
                $query->query_vars['posts_per_page'] = -1;
                break;

            case 'video_portal':  
                $query->query_vars['posts_per_page'] = -1;
                break;

            default:
                break;
        }
    }

    return $query;
}

...但是WP_Query提供了2种方法来访问它的变量:get and set,前者已经检查了你正在寻找的变量是否因为存在,所以你不必自己做:

function set_posts_per_page_for_haivision_custom_post_type($query)
{
    switch ( $query->get('post_type') )
    {
        case 'press_release':  
            $query->set('posts_per_page', -1);
            break;

        case 'video_portal':  
            $query->set('posts_per_page', -1);
            break;

        default:
            break;
    }
    return $query;
}