在‘$QUERY->SET();’的‘CATEGORY_NAME’中使用?

时间:2013-11-23 作者:its_me

这是我在主题函数中的函数。php:

function better_editions( $query ) {

    // Categories act as \'Editions\' on my site

    $get_edition = get_query_var( \'category_name\' );
    if( $get_edition !== \'\' ) {
        $edition = get_term_by( \'slug\', $get_edition, \'category\' );
        if( $edition && !is_wp_error( $edition ) ) {
            $edition = $get_edition;
        }
    }

    if ( $query->is_category() && isset($edition) && $query->is_main_query() ) {
        $query->set( \'post_type\', array( \'post\' ) );
        $query->set( \'category_name\', $edition.\', intl\' );
    }
}
add_action( \'pre_get_posts\', \'better_editions\' );
我使用该功能显示所有类别下属于“国际(intl)”类别的帖子(在所有类别档案、类别帖子列表等中)。

据我所知,为了定义多个类别category_name 在里面$query->set();, 这是唯一的办法,除非我错了:

$query->set( \'category_name\', \'category1, category2\' );
这就是我正在做的,如上面的函数所示。

问题是,函数就位后,我会出现以下错误:

Notice: 数组到字符串的转换/var/www/wp.dev/public/wp-admin/edit.php 在线225

The error is only visible 具有debug 已打开,并且仅在特定类别的“所有帖子”页面上打开。例如

http://wp.dev/wp-admin/edit.php?category_name=intl
。。。以上链接列出了wp admin中“International(intl)”类别下的所有帖子。

我在函数中做错了什么?如何修复此问题?

NOTE: 我不想使用!is_admin() 因为我希望该函数也应用于wp admin。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我无法复制该问题,但是the Notice references this line:

add_screen_option( \'per_page\', array( \'label\' => $title, \'default\' => 20, \'option\' => \'edit_\' . $post_type . \'_per_page\' ) );
这让我觉得你应该在你的GET 一串

http://wp.dev/wp-admin/edit.php?post_type=post&category_name=intl
只是一个猜测,因为我不能重复这个问题。如果这不能推动你前进,我将删除答案:)

结束