我添加了这个代码添加到funtions.php
function tc_tag_for_cpt($query) {
if(is_tag() && empty( $query->query_vars['suppress_filters'] ) && !is_admin()) {
$post_type = get_query_var('post_type');
$post_type = ($post_type) ? $post_type : array('resources','post','page'); //,'nav_menu_item'
$query->set('post_type',$post_type);
return $query;
}
}
add_filter( 'posts_orderby', 'sort_query_by_post_type', 10, 2 );
function sort_query_by_post_type( $sortby, $thequery ) {
if(is_tag() && empty( $query->query_vars['suppress_filters'] ) && !is_admin()) {
$thequery->set('orderby','post_type');
if ( !empty($thequery->query_vars['post_type']) && isset($thequery->query_vars['orderby']) && $thequery->query_vars['orderby'] == 'post_type' )
$sortby = "find_in_set(post_type, '" . implode( ',', $thequery->query_vars['post_type'] ) . "')";
}
return $sortby;
}
应该在按帖子类型排序的标签存档上显示结果(资源是自定义帖子类型)。 它会这样做,但屏幕顶部会显示一条错误消息:
“警告:implode()[function.implode]:第279行/home/csleh3/public_html/sandbox/wp-content/themes/aodmarketing/functions.php中传递的参数无效”
这是“内爆”行。
我的目标是让标记存档上的结果按帖子类型排序列表,而不是日期或标题。
答案 0 :(得分:0)
$thequery->query_vars['post_type']
会将特定的post_type作为post
之类的字符串返回。你不能破坏它。
你应该能够删除关于试图破坏它的部分:
$sortby = "find_in_set(post_type, '" . $thequery->query_vars['post_type'] . "')";