【问题标题】:Get category and terms from wp_query result in WordPress从 WordPress 中的 wp_query 结果中获取类别和术语
【发布时间】:2019-10-24 20:16:07
【问题描述】:

我正在尝试从我正在搜索特定单词的 WP_QUERY 中创建类别和术语的计数器。

但我无法理解是否可行,我已经阅读了 Stack Overflow 上的文档和一些帖子,但没有找到任何解决方案。

我的查找代码很简单:

$args['post_type'] = $post_type;
$args['post_status'] = 'publish';
$args['posts_per_page'] = 14;
$args['paged'] = 1;
$args['s'] = 'something to search';

$query = new WP_Query($args);

现在我需要计算有多少帖子属于“类别 1”,或者有多少帖子属于“术语 x”。

我可以使用简单的选择来获取此信息吗?

【问题讨论】:

    标签: wordpress counter


    【解决方案1】:

    这是一个解决方案 - 请自定义它

    $args = [
       'post_type' => 'post',
       'posts_per_page' => -1
    ];
    
    $results = new wp_query( $args );
    
    $terms = [];
    
    while( $results->have_posts() ){
    
        $results->the_post();
        $get_terms = get_the_terms( get_the_ID(), 'category' );
        foreach( $get_terms as $term ) { 
            $terms[] = $term->term_id; 
        }
    
    }
    
    $repeated_terms = array_count_values($terms);
    
    print_r($repeated_terms);
    
    //then get term's information from term's ids and show counts
    

    【讨论】:

    • 非常感谢 sn-p。真的节省了我的时间
    【解决方案2】:

    试试这个:

    摘录自:https://developer.wordpress.org/reference/classes/wp_query/

    $args = array(
        'post_type' => 'post',
        'tax_query' => array(
            array(
                'taxonomy' => 'category', // get 'posts' only within this taxonomy (category)
                'field'    => 'slug', // get 'posts' by the slug field (can also be 'name')
                'terms'    => 'category1', //get 'posts' terms by the slug field named: 'category1' (or termX)
            ),
        ),
        's' => 'ferrari' // search on matching posts the keyword 'ferrari'
    );
    $query = new WP_Query( $args );
    

    【讨论】:

    • 嗨 gtamborero,但是您想列出与主查询分开的每个类别或术语只是为了计数?那不是想法,我想进行搜索,并根据搜索结果知道返回了多少类别/术语并计算它们。
    【解决方案3】:

    我已经意识到,Wordpress 没有一个很好的解决方案,而不是内部循环,所以我做了一个选择计数,像这样:

    SELECT wp_terms.name, wp_terms.slug, wp_terms.term_id, Count(wp_terms.term_id) as count FROM wp_posts
    INNER JOIN wp_term_taxonomy ON wp_term_taxonomy.taxonomy = 'category'
    INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
    INNER JOIN wp_terms ON wp_terms.term_id = wp_term_taxonomy.term_id
    INNER JOIN wp_postmeta ON meta_key = 'controledata' and wp_postmeta.post_id = wp_posts.ID
    WHERE post_type = 'eventos' AND post_status = 'publish' AND count > 0 AND wp_terms.slug LIKE '%some_term%'
    GROUP BY wp_terms.name, wp_terms.slug, wp_terms.term_id
    Order by wp_terms.name asc
    

    所以,它并没有使服务器过载,但我需要两个选择来挂载这个页面。

    感谢您的每一个回答。

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 2023-03-17
      • 2020-05-02
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 2018-06-16
      • 2017-09-20
      相关资源
      最近更新 更多