Cum verifici dacă există un slug?
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

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.

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

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

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

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

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.

î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()

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.

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