如何在 wordpress/genesis 搜索结果页面中优先考虑帖子而不是页面?
How do I prioritize posts over pages in a wordpress/genesis search result page?
如何在 wordpress/genesis 搜索结果页面中优先于页面 post?与此代码类似,除了我希望 posts 在页面之前显示并且我似乎无法完全调整此代码来执行此操作:
function change_search_result_order($query) {
// Check if current page is search page
if ($query->is_search) {
// Specify orderby and order, ordering will be by slug of post_type: pAge > pOst
$query->set('orderby', 'post_type');
$query->set('order', 'ASC');
};
return $query;
}
add_filter('pre_get_posts', 'change_search_result_order');
也提到了这个代码块,但我似乎找不到合适的地方——如果可以的话,是不是就像切换页面和post一样简单?
$query->set('post_type', array('page','post'));
原始出处:
提前致谢!
亚当
如果你分解另一个答案中给出的代码,你可以清楚地看到它在做什么。
- 在
pre_get_posts
上调用了自定义函数,这是在获取任何 post 之前。
- 在函数内部,它确保它是一个
search
查询,并且不会在其他页面或页面模板上触发。
- 它将
post_types
设置为 page
和 post
,从而删除任何自定义 post 类型。
- 它将 post 的顺序更改为按
post_type
的名称排序
- 它将 post 的顺序更改为升序或降序。
在其中添加 post_types
,这样一来,如果您使用另一个添加 CPT 的插件或添加您自己的插件,它们将不会被包括在内(例如活动或工作人员)。
自 WP 4.0 起,$query
接受 type
作为 orderby
参数。请注意 post_type
也适用,但默认的非别名值为 type
.
将顺序更改为 Desc
,因为您希望 [PO]sts 在 [PA]ges
之前
add_filter( 'pre_get_posts', 'change_search_result_order' );
function change_search_result_order($query){
if( $query->is_search ){
$query->set( 'post_type', array( 'page', 'post' ) );
$query->set( 'orderby', 'type' );
$query->set( 'order', 'DESC' );
};
return $query;
}
将其粘贴到您的 functions.php 文件中,您应该可以开始了。
如何在 wordpress/genesis 搜索结果页面中优先于页面 post?与此代码类似,除了我希望 posts 在页面之前显示并且我似乎无法完全调整此代码来执行此操作:
function change_search_result_order($query) {
// Check if current page is search page
if ($query->is_search) {
// Specify orderby and order, ordering will be by slug of post_type: pAge > pOst
$query->set('orderby', 'post_type');
$query->set('order', 'ASC');
};
return $query;
}
add_filter('pre_get_posts', 'change_search_result_order');
也提到了这个代码块,但我似乎找不到合适的地方——如果可以的话,是不是就像切换页面和post一样简单?
$query->set('post_type', array('page','post'));
原始出处:
提前致谢! 亚当
如果你分解另一个答案中给出的代码,你可以清楚地看到它在做什么。
- 在
pre_get_posts
上调用了自定义函数,这是在获取任何 post 之前。 - 在函数内部,它确保它是一个
search
查询,并且不会在其他页面或页面模板上触发。 - 它将
post_types
设置为page
和post
,从而删除任何自定义 post 类型。 - 它将 post 的顺序更改为按
post_type
的名称排序
- 它将 post 的顺序更改为升序或降序。
在其中添加 post_types
,这样一来,如果您使用另一个添加 CPT 的插件或添加您自己的插件,它们将不会被包括在内(例如活动或工作人员)。
自 WP 4.0 起,$query
接受 type
作为 orderby
参数。请注意 post_type
也适用,但默认的非别名值为 type
.
将顺序更改为 Desc
,因为您希望 [PO]sts 在 [PA]ges
add_filter( 'pre_get_posts', 'change_search_result_order' );
function change_search_result_order($query){
if( $query->is_search ){
$query->set( 'post_type', array( 'page', 'post' ) );
$query->set( 'orderby', 'type' );
$query->set( 'order', 'DESC' );
};
return $query;
}
将其粘贴到您的 functions.php 文件中,您应该可以开始了。