Wordpress上に構築されたBaseballブログで、過去30日間に最も使用されたタグを表示する方法を探しています。私はコーダーではありませんが、最も使用されている28個のタグのリストを表示するためにこのマッシュアップを考え出しました(私のテーマに合うように好みます)。私の人生では、タグを過去30日間で最も使用されたものに制限する方法を理解することはできません。
これが私が持っているものです:
<ul id="footer-tags">
<?php
global $wpdb;
$term_ids = $wpdb->get_col("
SELECT DISTINCT term_taxonomy_id FROM $wpdb->term_relationships
INNER JOIN $wpdb->posts ON $wpdb->posts.ID = object_id
WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= $wpdb->posts.post_date");
if(count($term_ids) > 0){
$tags = get_tags(array(
'orderby' => 'count',
'order' => 'DESC',
'number' => 28,
'include' => $term_ids,
));
foreach ( (array) $tags as $tag ) {
echo '<li><a href="' . get_tag_link ($tag->term_id) . '" rel="tag">' . $tag->name . '</a></li>';
}
}
?>
</ul>
ウェブサイトは4週間弱前なので、テストするために変更INTERVAL 30 DAY
しましINTERVAL 3 DAY
た。返されるタグはランダムに見え、2週間以上使用されておらず、1回しか使用されていないものもあります。同様に、さらに使用された場合、8つのタグのみが表示されます。
正しい日数が照会されたことを確認するために、次のことを行いました。
投稿とページのゴミ箱にあるすべてのアイテムを完全に削除しました。カスタムの投稿タイプはありません。
下書きでも同じことをしました。
phpmyadminでクエリを実行して、すべての投稿リビジョンを削除します-DELETE FROM wp_posts WHERE post_type = "revision";
phpmyadminでクエリを実行して、結果が過去3日間の投稿であるかどうかを確認します-SELECT * from wp_posts WHERE DATE_SUB(CURDATE(), INTERVAL 3 DAY) <= post_date
phpmyadminクエリの結果は、実際には過去3日間の投稿でしたが、フロントエンドの表示は変更されていません。
アップデート
ここにいくつかのスクリーンショットがあります。スクリーンショットは、私のコードが間違っている場所を見つけるのに役立つかもしれません。
カテゴリとタグ付きのブログ投稿
wp_posts
ID
上記の投稿の投稿のあるテーブル
wp_terms
term_id
使用されたタグのテーブル
wp_term_taxonomy
タグterm_id
付きterm_taxonomy_id
wp_term_relationships
として投稿するようにterm_taxonomy_id
割り当てられたobject_id
更新2
私は問題を理解したと思いますが、それを修正する方法がわかりません。
SQLクエリはterm_taxonomy_id
、実際のタグIDではなく、を取得してget_tag_link
使用しますterm_id
更新3
最近、最も人気のある最近使用されたタグを表示するプラグインを作成しました-https ://wordpress.org/plugins/recent-popular-tags/