我具有“位置”的自定义帖子类型。然后,我对该cpt的每个页面都有子页面。因此看起来像是“ www.example.com/location/location-name/child-page/”,每个子页面都使用“ location-product-services.php”发布模板。所以我想做的是从搜索结果中排除该cpt的子级。
我正在尝试通过检查元数据来查看它是否正在使用该模板。我似乎无法正常工作。任何帮助都会很棒。
这是我目前拥有的-
// Exclude local product and services pages from search result.
function location_subpages_exclude_search( $query ) {
if ( is_search() && !is_admin()) {
$query->set('meta_query',
array(
'key' => '_wp_page_template',
'value' => 'location-product-services.php',
'compare' => '!='
)
);
}
}
add_action('pre_get_posts', 'location_subpages_exclude_search');
谢谢。
答案 0 :(得分:0)
首先,我几乎每次想修改搜索时都专门使用Relevanssi插件。但是要以编程方式进行搜索,我想这就是您想要的:
public int ShortWordCount(params string[] input) => input.Where(w => { var lc = w.Where(c => Char.IsLetter(c)).Count(); return lc <= 5 && lc > 0; }).Count();
使用函数get_terms搜索您的CPT,“搜索”是您的$ query(您可以考虑使用SQL通配符“%”包装搜索字符串),并且“父代” => 0仅返回顶级。 / p>
答案 1 :(得分:0)
我知道了。 首先,我得到了我的所有帖子类型的父页面,使用get_pages()可以全部抓住它们。
遍历每个父页面,并为该父页面的子代运行另一个get_pages()。
DatabaseReference messagesRef = mRootRef.child("messages")
.child(current_user_id)
.child(chat_user_id)
.orderByChild("time");