php - 从自定义帖子类型中排除术语的帖子
问题描述
帖子类型是新闻。分类法是印刷机类型 (slug=presstype)。术语是新闻稿(slug=release)。
我只是想在我的函数文件中添加一些 PHP,它将从普通的 Wordpress 自定义帖子类型循环(例如 mydomain.com/press)中排除任何称为“发布”的帖子,而不是从其他可能包含新闻的自定义循环中排除.
搜索了很多不同的方式,但无法真正找到有效的解决方案。任何人都知道最简单的functions.php代码可以做到这一点吗?
解决方案
您是否尝试过简单地删除术语release
with pre_get_posts
?为了语义清晰,你可以用is_post_type_archive()
函数包装它。因此,仅在/press
页面(按存档)上,tax_query
设置了一个参数以排除任何带有术语 slug 的帖子release
。
add_action( 'pre_get_posts', 'remove_release_from_press' );
function remove_release_from_press( $query ) {
if( is_post_type_archive( 'press' ) ){
$tax_query = array([
'taxonomy' => 'presstype',
'field' => 'slug',
'terms' => 'release',
'operator' => 'NOT IN',
]);
$query->set( 'tax_query', $tax_query );
}
}
推荐阅读
- python - Django 模板翻译未按预期工作
- c# - 从另一个类调用按钮单击功能
- java - 在 SPARQL 中为查询添加前缀
- apache - 如何在 Debian 下的用户目录中为网站启用 Apache 虚拟主机?
- html - 画布无法在 IE 上加载
- php - 无法将 $post-ID 传递到 fpdb 函数 wordpress 管理屏幕
- microsoft-graph-api - Microsoft Graph sendMail 不起作用并返回 NULL
- caching - 内核没有在内存耗尽时清除缓存
- php - Wordpress:只有一个页面的分页重定向到主页
- asp.net-mvc - ViewBag 的 Mvc DropdownList 默认选择值