0

请帮助我使用我的自定义函数get_post_by_slug,该函数尝试查询数据库并获取 slugLIKE something%来自特定类别 ( id=5) 的帖子 ID。它一直工作到 WP 3.5,但现在坏了,我认为缓存可能有问题。我添加$wpdb->prepare了 WP 3.5,但它并没有真正解决问题。

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;
}

提前致谢!

4

2 回答 2

0

prepare就像sprintf它使用%你使用的那样,LIKE你可以这样做。此外,如果您使用准备,您应该删除''周围的%s,准备会为您报价。认为下一个示例对您有用。

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;
}
于 2012-12-27T13:22:30.563 回答
-2

通过 slug 获取帖子 ID 的最简单解决方案是:

$your_desired_title = "yourtitle";

global $wpdb;
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $your_desired_title ");
echo $id;
于 2013-04-08T16:55:37.230 回答