wordpress - 如何创建过滤器以显示自定义帖子类型
问题描述
我有一个自定义帖子类型“项目”,并有一个概述页面,显示这些帖子类型以及特色图片和帖子标题。我还为该帖子类型创建了一个自定义分类,并将帖子分配给该分类中的类别。
我现在想要实现的是,在列出所有帖子的概览页面上,它们上方应该是一个类似于显示自定义分类类别的过滤器栏。
我现在的问题是:我需要哪些 WordPress 功能,以便当有人点击其中一个类别时,只会显示分配给该类别的帖子?我不希望页面刷新或加载另一个页面。这是我想要实现的示例:https ://www.hauserlacour.de/en/work
另外,我不是编码员。我使用 Pinegrow 将我的静态 html 网站转换为 wordpress 主题。但在 Pinegrove 中,我可以选择很多 WP 功能。这就是为什么我只需要了解上面的设置是如何工作的。
提前谢谢了!
解决方案
如果你对你有更多的了解,WP_Query
你可以使用tax_query
如下:
$args = array(
'post_type' => 'project',
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => array( 'project_cat' ), // <-- NO! Does not work.
'field' => 'slug',
'terms' => array( 'project_cat1', 'project_cat2')
)
)
);
$query = new WP_Query( $args );
参考:https ://developer.wordpress.org/reference/classes/wp_tax_query/
或者您可以简单地列出分类术语并简单地重定向到分类详细信息页面,其中将自动列出相应的项目。
$args = array( 'hide_empty=0' );
$terms = get_terms( 'my_term', $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
$count = count( $terms );
$i = 0;
$term_list = '<p class="my_term-archive">';
foreach ( $terms as $term ) {
$i++;
$term_list .= '<a href="' . esc_url( get_term_link( $term ) ) . '" alt="' . esc_attr( sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) ) . '">' . $term->name . '</a>';
if ( $count != $i ) {
$term_list .= ' · ';
}
else {
$term_list .= '</p>';
}
}
echo $term_list;
}
参考:https ://developer.wordpress.org/reference/functions/get_terms/
推荐阅读
- swift - 如何在 iOS 中实现 alpha 渐变效果
- c - 为什么我的代码在 scanf 上运行良好,但在我使用 fgets 时显示输出差异?
- excel - 如何使用 Apache poi 库将 word、excel 文件嵌入到 ppt 文件中?
- android - 在 kotlin 的警报对话框中禁用积极按钮
- java - 何时以及如何在 flatMap 上执行 1 到 0..n 映射 Stream mapMulti
- r - 按日期集分组 data.table
- r - 将 Bibtex 类对象转换为为每个引用格式化的一系列文本字符串
- swift - 如何快速从父视图控制器访问子视图控制器?
- javascript - 网站所有者或服务器是否可以知道浏览器的详细信息
- excel - Excel 验证电话号码