Wordpress:如何通过自定义分类法在作者页面中显示帖子计数
Posted
技术标签:
【中文标题】Wordpress:如何通过自定义分类法在作者页面中显示帖子计数【英文标题】:Wordpress: How to display post count in author page by custom taxonomy 【发布时间】:2015-09-14 20:37:51 【问题描述】:我正在尝试使用计数器在作者页面中显示自定义分类,但似乎我不知道该怎么做。
我在 function.php
中有一个代码 add_action( 'pre_get_posts', function ( $q )
if( !is_admin() && $q->is_main_query() && $q->is_author() )
$q->set( 'posts_per_page', 100 );
$q->set( 'post_type', 'custom_feedback' );
);
在我的作者页面中:
<div class="feedback-respond">
<h3 class="feedback-title">User Feedback </h3>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; else: ?>
<p><?php _e('No posts by this author.'); ?></p>
<?php endif; ?>
</div>
该代码适用于所有作者个人资料,但我不知道如何让自定义分类法显示如下:
用户反馈
6 正面反馈 4 负面反馈
所有反馈都在这里
所有反馈都在这里
所有反馈都在这里
顺便说一下,它是一个自定义帖子类型(custom_feedback)和自定义分类(feedback_taxonomy),分为正面和负面两个类别。
请各位高手帮忙?
【问题讨论】:
codex.wordpress.org/Function_Reference/get_post_custom 但不是自定义字段,而是显示 author.php 中的自定义分类。 让我为你谷歌一下:wordpress.stackexchange.com/questions/10175/… 为了明确并回答您的问题 :-),一篇帖子只能分配一个术语,positive
或 negative
。如果你有 10 个帖子,你需要知道有多少帖子属于negative
,有多少属于positive
。
@odedta 你的 cmets 完全没有意义。你在一个野鹅案上。这个真的很简单,后面会根据OP的反馈正确回答这个问题
【参考方案1】:
实现这一点的唯一方法是运行两个单独的查询并计算从这两个单独的查询返回的帖子。为此,我们将使用get_posts
,因为get_posts
已经将一些重要的默认值传递给WP_Query
,以使查询更快且更注重性能。
我们将为查询添加一个巨大的时间和资源节省程序'fields' => 'ids'
。它的作用是,它只获取帖子 ID,而不是完整的帖子对象。这可以将查询时间和数据库查询减少 99%,因此即使您要在整个数据库上运行 2 个单独的查询,页面性能的损失也不会引起注意。
让我们把所有东西都放在代码中(这会进入 author.php,请注意,此代码未经测试,至少需要 PHP 5.4+)
$author_id = get_queried_object_id(); // Gets the author id when viewing the author page
// Add our term slugs into an array.
$terms = ['positive', 'negative']; // Just make sure these values are correct
$count = [];
foreach ( $terms as $term )
// Build our query
$args = [
'nopaging' => true,
'post_type' => 'custom_feedback',
'author' => $author_id,
'tax_query' => [
[
'taxonomy' => 'feedback_taxonomy',
'field' => 'slug',
'terms' => $term
],
],
'fields' => 'ids'
];
$q = get_posts( $args );
// Count the amount of posts and add in array
$count[$term] = count( $q );
// Display our text with post counts, just make sure your array keys correspond with your term slugs used
$positive = ( isset( $count['positive'] ) ) ? $count['positive'] : 0;
$negative =( isset( $count['negative'] ) ) ? $count['negative'] : 0;
echo $positive . ' POSITIVE feedback ' . $negative . ' NEGATIVE feedback';
【讨论】:
完美运行。非常感谢@PieterGoosen。我可以再问一件事吗?有没有办法修改 the_content()?我想在负分类和正分类中添加一个 CSS 类。 我很高兴,很高兴它有效。是的,这是可以做到的。不过,您应该为此提出一个新问题:-)以上是关于Wordpress:如何通过自定义分类法在作者页面中显示帖子计数的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress - 如何通过其分类过滤添加的自定义帖子?
如何为自定义帖子和分类法制作 Wordpress 存档页面?