我成功重新调整现有代码以计算特定标记内的帖子总数,然后打印总和。我根据现有的片段拼凑了这个,虽然它有效,但我发现效率非常低。
理想情况下,如果我可以计算所有代码中的帖子数量并返回总数,那就太棒了,所以我不需要硬编码$term_name
。
我知道那里有一个循环...这是我第一次真正处理PHP,所以虽然这很令人兴奋,但它让我想起我有很多需要学习的东西。
<?php
$taxonomy = "post_tag"; // can be category, post_tag, or custom taxonomy name
// Using Term Name
$term_name = 'Cookies';
$term = get_term_by('name', $term_name, $taxonomy);
$term_name1 = 'Juice';
$term1 = get_term_by('name', $term_name1, $taxonomy);
$term_name2 = 'Milk';
$term2 = get_term_by('name', $term_name2, $taxonomy);
// Fetch the count, sum and print.
echo ($term->count + $term1->count + $term2->count);
?>
稍微澄清一点:我想计算每个标签下的帖子,然后将它们相加,即使重复计算帖子。我正在使用标签作为帖子的一种库存。假设我们使用标签来识别图片中的项目,您可以用它来标记20,000个不同的项目。
答案 0 :(得分:1)
实际上,您需要做的第一件事是建立一个使用的术语列表,然后获取计数。这两个都可以在单个数据库查询中完成。
$taxonomy = 'post_tag'; //the post type you want to look up
global $wpdb; //get instance of database connection
$sql = $wpdb->prepare("SELECT terms.name,taxonomy.count
FROM wp_terms AS terms
INNER JOIN wp_term_taxonomy AS taxonomy ON (terms.term_id = taxonomy.term_id)
WHERE taxonomy = %s;",$taxonomy);
$results = $wpdb->get_results($sql);
if ( $results ){
foreach ( $results as $result ){
echo('<p>'.$result->name.' has a count of '.$result->count.'</p>');
}
}
请注意:您应该使用$ wpdb-&gt;前缀而不是硬编码“wp _”来进一步优化答案...但如果这仅供您自己使用而不是重新分发,则无需担心关于那个。
编辑:
根据对原始问题的评论,备用SQL可以是:
$taxonomy = 'post_tag'; //the post type you want to look up
global $wpdb; //get instance of database connection
$sql = $wpdb->prepare("SELECT sum(taxonomy.count)
FROM wp_terms AS terms
INNER JOIN wp_term_taxonomy AS taxonomy ON (terms.term_id = taxonomy.term_id)
WHERE taxonomy = %s;",$taxonomy);
$result = $wpdb->get_var($sql);
echo("There are a total of $result tag matches");
注意:如果您有2个帖子,每个帖子使用3个不同的标签,您将获得6的结果(这是您在评论中想要的内容......但不是其他人可能想要的内容)。