Php Wordpress:在slug名称类似的地方获取帖子id
请帮助我使用我的自定义函数Php Wordpress:在slug名称类似的地方获取帖子id,php,sql,wordpress,Php,Sql,Wordpress,请帮助我使用我的自定义函数get\u post\u by\u slug,该函数尝试查询数据库并从特定类别(id=5)中获取slug与类似的帖子id。它一直工作到WP 3.5,但现在坏了,我认为缓存可能有问题。我为wp3.5添加了$wpdb->prepare,但它并没有真正解决问题 function get_post_by_slug($post_slug) { global $wpdb; $post = $wpdb->get_var($wpdb->prepare("SELECT
get\u post\u by\u slug
,该函数尝试查询数据库并从特定类别(id=5
)中获取slug与类似的帖子id。它一直工作到WP 3.5,但现在坏了,我认为缓存可能有问题。我为wp3.5添加了$wpdb->prepare
,但它并没有真正解决问题
function get_post_by_slug($post_slug) {
global $wpdb;
$post = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id WHERE post_name LIKE '%s%' AND term_taxonomy_id=5 LIMIT 1", $post_slug));
return $post;
}
提前谢谢 prepare
类似于sprintf
,因此它使用了您用于的%
,您可以这样做。
此外,您还应删除'
周围的%s
如果您使用prepare,prepare将为您报价。我想下一个例子对你有用
function get_post_by_slug($post_slug) {
global $wpdb;
$post_slug = '%' . $post_slug . '%';
$post = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id WHERE post_name LIKE %s AND term_taxonomy_id=5 LIMIT 1", $post_slug));
return $post;
}
通过slug获取post id的最简单解决方案是:
$your_desired_title = "yourtitle";
global $wpdb;
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $your_desired_title ");
echo $id;
感谢$wpdb->prepare()上的提示,但是,查询仍然不会返回帖子…当我运行此查询时:SELECT ID FROM wp_posts LEFT JOIN wp_term_relationships on wp_posts.ID=wp_term_relationships.object_ID WHERE post_name像“%hello world%”和term_taxonomy_ID=2 LIMIT 1
,所以,也许你可以手动测试它,看看有什么问题。实际上,发生了一件奇怪的事情。函数总是返回相同的结果。。。有我不知道的缓存吗?WP缓存这样的东西吗?它不应该在数据库中缓存,你们在phpMyAdmin中做过实验吗?它不会缓存不同的查询。更可能的是你的post_slug是相同的,你检查过了吗?