Cum verifici dacă există un slug?

15 aug. 2011, 13:09:15
Vizualizări: 22.7K
Voturi: 13

Am un șir de caractere arbitrar și vreau să verific dacă există o postare cu acel slug în site. Am încercat să găsesc o modalitate de a lista toate slug-urile, dar nu pot găsi așa ceva. Mulțumesc

1
Comentarii

Întrebarea este protejată, așa că nu pot răspunde. Poți folosi if(is_page('slug-here')) { echo 'exists'; }.

Iago Iago
5 iul. 2015 15:43:43
Toate răspunsurile la întrebare 5
6
11

Acesta este ceea ce cauți, testat și pe care îl folosesc pe propriile mele site-uri:

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

Poți să o folosești astfel:

if (the_slug_exists('contact')) {
    // fă ceva
}

Înlocuiește contact cu orice slug dorești să verifici.

15 mai 2014 02:19:29
Comentarii

ar trebui să folosim $wpdb_prepare pentru a pregăti și a scăpa declarația SQL?

insidepower insidepower
14 mar. 2015 09:09:17

Există vreo posibilitate să modificăm codul pentru a viza doar un anumit tip de postare personalizată?

Bruno Monteiro Bruno Monteiro
29 mar. 2016 15:58:47

Poate if(the_slug_exists('contact') && post_type_exists('contact')) dar atunci de ce să nu folosim doar if(post_type_exists('contact')) ...

Jonas Lundman Jonas Lundman
7 oct. 2017 18:45:52

Utilizarea WP_Query() este o soluție mai ușor de întreținut decât o interogare directă în baza de date. De exemplu, $query = new WP_Query(array('name' => 'my-new-slug')); if ($query->post_count == 0) {// Sunt unic!}

Alex Steinberg Alex Steinberg
24 iun. 2018 18:30:31

De asemenea, prefixul bazei de date nu este garantat că va fi wp_

Flimm Flimm
2 sept. 2020 18:36:47

Poate fi scris astfel pentru a folosi prefixul corect:("SELECT post_name FROM {$wpdb->prefix}posts WHERE post_name = '$post_name'", 'ARRAY_A'))

brasofilo brasofilo
10 nov. 2020 23:46:53
Arată celelalte 1 comentarii
2

Vrei să spui slugul articolului? Poți încerca să utilizezi wp_unique_post_slug() pe care WordPress îl folosește pentru a genera acestea. Dacă îmi amintesc corect, dacă slugul pe care încerci să-l folosești nu este unic, va fi returnat cu un index numeric adăugat.

15 aug. 2011 18:54:20
Comentarii

îmi pare rău că răspund atât de târziu. Da, post slug este slug-ul pe care îl doresc. Din păcate, nu am post_id-ul care este necesar pentru a folosi wp_unique_post_slug()

lulalala lulalala
22 aug. 2011 04:43:29

Nu am reușit să înțeleg cum să folosesc wp_unique_post_slug pentru a face asta. Funcția nu verifică cu adevărat dacă un slug există, ci mai degrabă creează unul. S-ar putea să greșesc sau să interpretez greșit, dar în testele mele nu a verificat dacă ceva exista deja.

Nathan Nathan
15 mai 2014 02:20:38
1

Ce zici de această abordare mai simplă?

$post_exists = get_page_by_path( $slug, OBJECT, $post_type );
if ( ! $post_exists )
    echo 'Nu există nicio postare cu acest slug.';

Dacă nu există o postare pentru slug-ul și tipul de postare furnizate, atunci get_page_by_path() returnează null.

25 apr. 2019 20:19:36
Comentarii

Rețineți că calea (path) nu este exact același lucru cu un slug (sau post_name pentru a folosi numele coloanei din baza de date). Dacă un articol are un articol părinte, atunci calea acestuia va fi parent_slug/slug

Flimm Flimm
2 sept. 2020 18:35:37
1
$args = array('name' => $slugName, 'post_type' => $postType); 

$slug_query = new WP_Query($args);
echo "<pre>";
var_dump($slug_query);
exit;

Acum ai suficiente informații pentru a testa dacă un articol a fost returnat sau nu, sper că acest lucru te ajută.

9 apr. 2013 12:49:01
Comentarii

Cum se va extrage unicitatea slug-ului?

Rahil Wazir Rahil Wazir
12 feb. 2014 23:09:04
1
$your_slug = 'my-pageeeeeee';
$wpdb = $GLOBALS['wpdb'];



//==================PRIMA metodă======================
    // Obține ID-ul paginii sau articolului după slug
    $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)) {
        //............
    }





//====================A DOUA metodă======================
    // Numără câte pagini sau articole au același slug
    $counts = $wpdb->get_var($wpdb->prepare("SELECT count(post_name) FROM ".$wpdb->posts ." WHERE post_name like '%s'", $slug) );
    if ($counts >=1 ) {
        //.............
    }
8 nov. 2015 17:30:12
Comentarii

Te rog să adaugi o explicație adecvată la răspunsurile tale, precum ce face codul și cum ar trebui să fie utilizat

Pieter Goosen Pieter Goosen
9 nov. 2015 06:24:38