我想显示按帖子类型分组的搜索结果。我有常规的帖子, 页面和自定义帖子类型的产品。我将如何通过编辑以下代码来完成此任务。下面的代码仅显示当前的所有帖子和页面。
<
?php
while (have_posts()) : the_post();
echo "<
h1>
";
echo $post->
post_type;
echo $post->
post_title;
echo "<
/h1>
";
endwhile;
?>
#1此代码将更改原始搜索查询, 以按你选择的顺序按邮政类型对结果进行排序。还有其他解决方案, 但这是我发现的唯一一种不会破坏分页或需要多个查询的解决方案。
add_filter('posts_orderby', 'my_custom_orderby', 10, 2);
function my_custom_orderby($orderby_statement, $object) {
global $wpdb;
if (!is_search())
return $orderby_statement;
// Disable this filter for future queries (only use this filter for the main query in a search page)
remove_filter(current_filter(), __FUNCTION__);
$orderby_statement = "FIELD(".$wpdb - >
prefix.
"posts.post_type, 'post-type-c', 'post-type-example-a', 'custom-post-type-b') ASC";
return $orderby_statement;
}
#2【wordpress按搜索页面上的帖子类型分组】就你而言, 我会做两件事:
- 将搜索页面的初始查询过滤为特定的帖子类型
- 对其余每种帖子类型使用一个WP_Query调用
<
?php
function SearchFilter($query) {
if ($query->
is_search &
&
!is_admin()) {
if (isset($query->
query["post_type"])) {
$query->
set('post_type', $query->
query["post_type"]);
} else {
$query->
set('post_type', 'product');
}
}
return $query;
}
add_filter('pre_get_posts', 'SearchFilter');
?>
对于(2), 请修改你从模板文件中提供的代码:
<
?php
$s = isset($_GET["s"]) ? $_GET["s"] : "";
$posts = new WP_Query("s=$s&
post_type=post");
if ( $posts->
have_posts() ) :
while ( $posts->
have_posts() ) : $posts->
the_post();
echo "<
h1>
";
echo $post->
post_type;
echo $post->
post_title;
echo "<
/h1>
";
endwhile;
wp_reset_postdata();
endif;
?>
你可以为其他每个帖子类型重复使用此代码。
最好避免使用query_posts … 请参阅没有query_posts的查询帖子(即使WordPress开发人员也同意)。
#3你需要更改发布查询以重新排序。你将在进入循环之前执行此操作。你可以在Wordpress Codex中阅读有关query_posts的更多信息。
http://codex.wordpress.org/Function_Reference/query_posts
global $wp_query;
$args = array_merge( $wp_query->
query, array( 'post_type' =>
array('type1', 'type2') ) );
query_posts( $args );
//the loop
推荐阅读
- wordpress(如何在wordpress的wp_list_table类中启用”编辑和删除操作”按钮)
- WordPress函数(更改现有的特色图像尺寸)
- WordPress的Foreach,传递类别ID变量显示帖子()
- WordPress通过元数据和搜索Heirachy筛选自定义帖子类型
- WordPress过滤器可以挂接到菜单li项并添加自定义属性
- Linux安装MySQL步骤
- Kubernetes官方java客户端之五(proto基本操作)
- 执行shell脚本的三种方式
- es常用查询语法 #yyds干货盘点#