gpt4 book ai didi

sql - 如何编写 SQL 查询以显示过去 30 天内在 Wordpress 网站中最常用的标签列表

转载 作者:行者123 更新时间:2023-12-04 21:44:33 25 4
gpt4 key购买 nike

我正在寻找一种方法来在我的棒球博客上显示过去 30 天内最常用的标签,该博客基于 Wordpress。我不是编码员,但我想出了这个混搭来显示最常用的 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 DAYINTERVAL 3 DAY并且返回的标签似乎是随机的,有些标签已经超过 2 周没有使用过,并且只使用过一次。同样,当使用更多标签时,只显示了 8 个标签。
为了检查查询的天数是否正确,我执行了以下操作:
完全删除了垃圾箱中帖子和页面的所有项目,我没有任何自定义帖子类型。
对草稿做了同样的处理。
在 phpmyadmin 中运行查询以删除所有帖子修订 - DELETE FROM wp_posts WHERE post_type = "revision";在 phpmyadmin 中运行查询以检查结果是否是过去 3 天的帖子 - SELECT * from wp_posts WHERE DATE_SUB(CURDATE(), INTERVAL 3 DAY) <= post_datephpmyadmin查询的结果,其实是最近3天的帖子,只是前端显示没有变化。
更新
这是一些屏幕截图。也许屏幕截图可以帮助找到我的代码错误的地方。
带有类别和标签的博客帖子
Image of blog post
wp_posts带帖子的 table ID以上帖子
wp_posts
wp_termsterm_id 的表使用的标签数量
wp_terms
wp_term_taxonomy带有标签'term_idterm_taxonomy_id
wp_term_taxonomy
wp_term_relationshipsterm_taxonomy_id分配为 object_id
wp_term_relationships
更新 2
我想我找到了问题所在,但不知道如何解决。
SQL 查询得到 term_taxonomy_id ,不是实际的标签 ID 和 get_tag_link用途 term_id更新 3
我最近创建了一个插件来显示最近使用的最流行的标签 - https://wordpress.org/plugins/recent-popular-tags/

最佳答案

您在 SQL 字符串中插入的 PHP 变量是可用于从 PHP 内部访问 WordPress 表的 PHP 对象;而您是在用于从 SQL 中访问数据的表和列的名称之后。

你想要:

"SELECT DISTINCT term_taxonomy_id FROM wp_term_relationships
INNER JOIN wp_posts ON wp_posts.ID = wp_term_relationships.object_id
WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= wp_posts.post_date"

顺便说一句:如果您需要将 PHP 变量的值插入到 SQL 语句中,请务必小心 escape it first in order to prevent any malicious code from being injected .

关于sql - 如何编写 SQL 查询以显示过去 30 天内在 Wordpress 网站中最常用的标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10264347/

25 4 0