Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示特定类别的标签?_Php_Wordpress - Fatal编程技术网

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

Php 如何显示特定类别的标签?,php,wordpress,Php,Wordpress,我尝试了很多解决方案,但对我来说并不好。你有没有办法用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_rela

我尝试了很多解决方案,但对我来说并不好。你有没有办法用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


    谢谢

    您可以通过传递分类法以获取\u术语,按分类法进行筛选:

    `$tags = get_terms(array( 
            'orderby' => 'count', 
            'order' => 'DESC', 
            'number' => 8, 
            'include' => $term_ids,
            'taxonomy' => 'my_category', // e.g 'post_tag'
        )); 
    
    `$tags = get_terms(array( 
            'orderby' => 'count', 
            'order' => 'DESC', 
            'number' => 8, 
            'include' => $term_ids,
            'name' => 'my_category_name', 
        ));
    
    或者,要按分类法中的特定类别进行筛选,请传递“名称”以获取\u术语:

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

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

    您可以通过传递分类法以获取术语,按分类法进行筛选:

    `$tags = get_terms(array( 
            'orderby' => 'count', 
            'order' => 'DESC', 
            'number' => 8, 
            'include' => $term_ids,
            'taxonomy' => 'my_category', // e.g 'post_tag'
        )); 
    
    `$tags = get_terms(array( 
            'orderby' => 'count', 
            'order' => 'DESC', 
            'number' => 8, 
            'include' => $term_ids,
            'name' => 'my_category_name', 
        ));
    
    或者,要按分类法中的特定类别进行筛选,请传递“名称”以获取\u术语:

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

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

    我已经阅读了您的问题,我认为您试图做的事情可能不可能仅凭一个查询

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


    这两种选择对我来说似乎都太麻烦了

    我重新阅读了您的问题,我认为您试图做的事情可能不可能仅凭一个查询

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


    这两种选择对我来说似乎都太麻烦了

    谢谢你的回复。我试过了,但不起作用。在什么方面不起作用?它不过滤它们,还是不返回任何内容?它不过滤它们。如果我打印($tags),我有以下内容:
    [0]=>WP\u术语对象([Term\u id]=>357[name]=>Caballero[slug]=>Caballero[Term\u group]=>0[Term\u分类法\u id]=>357[taxonomy]=>post\u标签[description]=>0[count]=>8[filter]=>raw)
    用于第一个object但是“Caballero”是您最常用的标记之一吗?如果您的所有标记都在“post_tag”类别中,则传递“taxonomy”=>“post_tag”会将get_term的结果缩小到仅包含这些标记。您还可以通过类别名称缩小范围(我已将此添加到我的答案中),但这似乎没有多大意义,因为传递'name'=>'Caballero'只会返回该标记的单个结果。也许我误解了你的意图!谢谢你的回复。我试过了,但不起作用。在什么方面不起作用?它不过滤它们,还是不返回任何内容?它不过滤它们。如果我打印($tags),我有以下内容:
    [0]=>WP\u术语对象([Term\u id]=>357[name]=>Caballero[slug]=>Caballero[Term\u group]=>0[Term\u分类法\u id]=>357[taxonomy]=>post\u标签[description]=>0[count]=>8[filter]=>raw)
    用于第一个object但是“Caballero”是您最常用的标记之一吗?如果您的所有标记都在“post_tag”类别中,则传递“taxonomy”=>“post_tag”会将get_term的结果缩小到仅包含这些标记。您还可以通过类别名称缩小范围(我已将此添加到我的答案中),但这似乎没有多大意义,因为传递'name'=>'Caballero'只会返回该标记的单个结果。也许我误解了你的意图!好啊谢谢你的回复。我去试试看:)好的!谢谢你的回复。我去试试看:)