Làm thế nào để kiểm tra nếu một con sên tồn tại?


8

Tôi có một chuỗi tùy ý và muốn kiểm tra xem một bài đăng với chuỗi sên đó có tồn tại trong trang web không. Tôi đã cố gắng tìm cách liệt kê tất cả các con sên, nhưng không thể tìm thấy một thứ như vậy. Cảm ơn


Câu hỏi được bảo vệ, vì vậy tôi không thể trả lời. Bạn có thể sử dụng if(is_page('slug-here')) { echo 'exists'; }.
Iago

Câu trả lời:


7

Đâ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ế contactbằng bất cứ con sên nào bạn muốn kiểm tra.


1
chúng ta có nên sử dụng $ wpdb_prepare để chuẩn bị thoát câu lệnh SQL không?
cuộc vào

Bất kỳ cơ hội để sửa đổi mã để chỉ nhắm mục tiêu một loại bài tùy chỉnh cụ thể?
Bruno Monteiro

Có thể 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')) ...
Jonas Lundman

Sử dụng WP_Query () là một giải pháp dễ bảo trì hơn truy vấn DB trực tiếp. Ví dụ:$query = new WP_Query(array('name' => 'my-new-slug')); if ($query->post_count == 0) {// I am unique!}
Alex Steinberg

5

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.


1
xin lỗi trả lời muộn vậy Có bài sên là sên tôi muốn. Thật không may, tôi không có post_id bắt buộc phải sử dụngwp_unique_post_slug()
lulalala

Tôi không thể tìm ra cách sử dụng wp_unique_post_slug để làm điều này. Nó thực sự kiểm tra xem một con sên có tồn tại không, nhiều như tạo ra một con sên. Tôi có thể sai hoặc giải thích sai một cái gì đó nhưng trong thử nghiệm của tôi, nó sẽ không kiểm tra nếu một cái gì đó đã tồn tại.
Nathan

4
$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.


1
Làm thế nào điều này sẽ trích xuất sên duy nhất?
Rahil Wazir

1

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.


0
$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 ) {
        //.............
    }

1
Vui lòng thêm lời giải thích phù hợp cho câu trả lời của bạn như những gì mã làm và cách sử dụng nó
Pieter Goosen 9/11/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.