我需要WP自定义分类法和自定义帖子类型的帮助。到目前为止,我还没有找到有效的解决方案。如果这有一个简单的解决方案,请接受我的道歉。我尽了最大努力,首先在所有地方找到解决方案。
问题说明-
我有一个分类法叫"department".我叫了3个CPT"course", "faculty", "library".所有3个CPT将使用相同的分类法"department". 我已成功完成所有设置,并将“department”分类法分配给所有3个CPT。
现在,我尝试按“部门”分类法显示帖子(所有3个CPT帖子)(例如,我有“x”、“y”、“z”等术语表示分类法“部门”)。我有一个名为"taxonomy-department.php", 有简单的循环-
<?php if (have_posts()) : ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li>
<?php the_title(); ?>
</li>
<?php endwhile; ?>
</ul>
<?php else : ?>
<p><?php _e(\'Sorry, no posts matched your criteria.\'); ?></p>
<?php endif; ?>
分类法模板中的上述循环不起作用,并且没有显示帖子。只是转到else语句。我不知道如何做到这一点。
如果我(在您的帮助下)成功获取帖子,是否也可以通过CPT过滤帖子?(在分类模板文件中)
非常感谢您的帮助。
SO网友:Amit
我要感谢@Rarst对答案的贡献。这是最后一段代码-
add_action( \'pre_get_posts\', \'my_tax_query\' );
function my_tax_query($query){
if ( !is_admin() && $query->is_main_query() && $query->is_tax( \'department\' ) ) {
$query->set( \'post_type\', array( \'course\', \'faculty\', \'library\' ) );
}
};
将代码放在
functions.php
文件这将从您拥有的所有帖子类型中获取所有帖子(针对术语页面)。
例如,如果您的术语页是http://domain-name.com/taxonomy/term1/
您将获得“的所有帖子”term1
“适用于所有帖子类型。
现在,我们可以按“帖子类型”过滤帖子了吗?有没有办法做到这一点?谢谢
SO网友:CodeMascot
请试试这个-
$post_type = array(\'course\', \'faculty\', \'library\');
$terms = array( \'x-tax-slug\', \'y-tax-slug\', \'z-tax-slug\' );
$args = array(
\'post_type\' => $post_type,
\'tax_query\' => array(
array(
\'taxonomy\' => \'department\',
\'field\' => \'slug\',
\'terms\' => $terms,
),
),
);
$query = new WP_Query( $args );
<?php if (have_posts()) : ?>
<ul>
<?php while ($query->have_posts()) : $query->the_post(); ?>
<li>
<?php the_title(); ?>
</li>
<?php endwhile; ?>
</ul>
<?php else : ?>
<p><?php _e(\'Sorry, no posts matched your criteria.\'); ?></p>
<?php endif; ?>
<?php wp_reset_postdata(); // reset the query ?>
因此,这里我们根据您的
department
分类法和自定义帖子类型。最后,我们正在重置查询。