我有一个任意字符串,想检查站点中是否存在带有该段塞字符串的帖子。我试图找到一种列出所有鼻涕虫的方法,但找不到这样的东西。谢谢
如何检查是否存在弹头?
5 个回复
SO网友:Nathan
这是您正在寻找、测试的内容,我在自己的网站上使用它:
function the_slug_exists($post_name) {
global $wpdb;
if($wpdb->get_row("SELECT post_name FROM wp_posts WHERE post_name = \'" . $post_name . "\'", \'ARRAY_A\')) {
return true;
} else {
return false;
}
}
然后,您可以这样使用它:if (the_slug_exists(\'contact\')) {
// do something
}
更换contact
用你想测试的鼻涕虫。SO网友:Rarst
你的意思是后鼻涕虫?你可以试着利用wp_unique_post_slug()
WP用来生成这些。如果我没记错的话,如果您尝试使用的slug不是唯一的,它将返回并附加数字索引。
SO网友:Kayo
$args = array(\'name\' => $slugName, \'post_type\' => $postType);
$slug_query = new WP_Query($args);
echo "<pre>";
var_dump($slug_query);
exit;
这样,您就有了足够的信息来测试帖子是否被退回,希望这能有所帮助。SO网友:Kevin Leary
这种更简单的方法怎么样?
$post_exists = get_page_by_path( $slug, OBJECT, $post_type );
if ( ! $post_exists )
echo \'No post exists with this slug.\';
如果给定slug和提供的post类型不存在post,则get_page_by_path()
返回null。SO网友:T.Todua
$your_slug = \'my-pageeeeeee\';
$wpdb = $GLOBALS[\'wpdb\'];
//==================FIRST method======================
$id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " . $wpdb->posts . " WHERE post_name = \'%s\' AND ( post_type = \'page\' OR post_type = \'post\') ", $slug) );
if (!empty($id)) {
//............
}
//====================SECOND method======================
$counts = $wpdb->get_var($wpdb->prepare("SELECT count(post_name) FROM ".$wpdb->posts ." WHERE post_name like \'%s\'", $slug) );
if ($counts >=1 ) {
//.............
}
结束