Câu trả lời:
Đây là những gì bạn đang tìm kiếm, đã thử nghiệm và tôi sử dụng nó trên các trang web của riêng mình:
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;
}
}
Sau đó bạn có thể sử dụng nó như thế này:
if (the_slug_exists('contact')) {
// do something
}
Thay thế contact
bằng bất cứ con sên nào bạn muốn kiểm tra.
if(the_slug_exists('contact') && post_type_exists('contact'))
nhưng sau đó tại sao không chỉ sử dụngif(post_type_exists('contact')) ...
$query = new WP_Query(array('name' => 'my-new-slug')); if ($query->post_count == 0) {// I am unique!}
Bạn có nghĩa là sên bài? Bạn có thể cố gắng sử dụng wp_unique_post_slug()
WP sử dụng để tạo ra chúng. Nếu tôi nhớ đúng nếu sên bạn đang cố sử dụng không phải là duy nhất, nó sẽ được trả về với chỉ số bằng số được nối thêm.
wp_unique_post_slug()
$args = array('name' => $slugName, 'post_type' => $postType);
$slug_query = new WP_Query($args);
echo "<pre>";
var_dump($slug_query);
exit;
Sau đó, bạn có quá nhiều thông tin để kiểm tra xem một bài đăng có được trả lại hay không, hy vọng điều này sẽ giúp ích.
Làm thế nào về cách tiếp cận đơn giản hơn?
$post_exists = get_page_by_path( $slug, OBJECT, $post_type );
if ( ! $post_exists )
echo 'No post exists with this slug.';
Nếu một bài viết không tồn tại cho loại sên và loại bài đăng được cung cấp thì get_page_by_path()
trả về null.
$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 ) {
//.............
}
if(is_page('slug-here')) { echo 'exists'; }
.