繁体   English   中英

Wordpress:如何显示特定类别的标签?

[英]Wordpress : How to display tags from a specific category?

我尝试了很多解决方案,但在我的情况下并不好。 您是否有想法使用Wordpress的函数get_terms()从特定类别显示“最佳标签”(大多数使用最近30天)?

<?php $wpdb->show_errors(); ?>
<?php
global $wpdb;
$term_ids = $wpdb->get_col(
"SELECT term_id FROM $wpdb->term_taxonomy
INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= $wpdb->posts.post_date"
                    );

if(count($term_ids) > 0){
$tags = get_terms(array(
    'orderby' => 'count', 
    'order' => 'DESC', 
    'number' => 8, 
    'include' => $term_ids,
));

foreach ( (array) $tags as $tag ) { ?>
    <li>
        <a href="<?php echo get_tag_link($tag->term_id); ?>" rel="tag" class="text-center">
            <img src="<?php the_field('image', $tag); ?>" class="trend-artist-img">
            <p><?php echo $tag->name ?></p>
        </a>
    </li>
<?php }} ?>

使用此代码,我有“最佳标签”的完整列表,但不是特定类别。

我需要的类别有ID:18。

谢谢!

您可以通过将分类法传递给get_terms来按分类法进行过滤:

`$tags = get_terms(array( 
        'orderby' => 'count', 
        'order' => 'DESC', 
        'number' => 8, 
        'include' => $term_ids,
        'taxonomy' => 'my_category', // e.g 'post_tag'
    )); 

或者,通过一个分类的特定类别进行过滤通过的“名称”到get_terms:

`$tags = get_terms(array( 
        'orderby' => 'count', 
        'order' => 'DESC', 
        'number' => 8, 
        'include' => $term_ids,
        'name' => 'my_category_name', 
    ));

这些可以结合起来。 这有帮助吗?

我已经重新阅读了您的问题,我认为您尝试做的事情可能无法通过单个查询完成。

问题是标签和类别都应用于帖子而不是相互之间,因此两者之间没有简单的关系。 您可以为每个最佳标记执行新的WP_Query,以检查是否有任何帖子同时包含标记和类别,但这将非常缓慢且效率低下。 或者您可以执行WP_Query以获取具有该类别和任何最佳标记的所有帖子,然后使用该查询的结果来确定哪些(如果有)最佳标记未被使用。

这些选项似乎比它们对我的价值更麻烦!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM