¿Cómo verificar si existe un slug?
Tengo una cadena arbitraria y quiero verificar si existe una entrada con ese slug en el sitio. Intenté encontrar una manera de listar todos los slugs, pero no encuentro cómo hacerlo. Gracias

Esto es lo que estás buscando, probado y lo uso en mis propios sitios:
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;
}
}
Puedes usarlo así:
if (the_slug_exists('contacto')) {
// hacer algo
}
Reemplaza contacto
con el slug que quieras verificar.

¿Deberíamos usar $wpdb_prepare para preparar y escapar la sentencia SQL?

¿Hay alguna posibilidad de modificar el código para que solo afecte a un tipo de entrada personalizado específico?

Quizás if(the_slug_exists('contact') && post_type_exists('contact'))
pero entonces ¿por qué no usar solo if(post_type_exists('contact')) ...

Usar WP_Query() es una solución más mantenible que una consulta directa a la base de datos. Por ejemplo, $query = new WP_Query(array('name' => 'my-new-slug')); if ($query->post_count == 0) {// ¡Soy único!}

¿Te refieres al slug de la publicación? Puedes intentar utilizar wp_unique_post_slug()
que WordPress usa para generarlos. Si recuerdo correctamente, si el slug que intentas usar no es único, se devolverá con un índice numérico agregado.

lamento responder tan tarde. Sí, el slug de la publicación es el slug que quiero. Desafortunadamente no tengo el post_id que se requiere para usar wp_unique_post_slug()

¿Qué tal este enfoque más sencillo?
$post_exists = get_page_by_path( $slug, OBJECT, $post_type );
if ( ! $post_exists )
echo 'No existe ningún post con este slug.';
Si no existe un post para el slug y tipo de post proporcionados, entonces get_page_by_path()
devuelve null.

$your_slug = 'my-pageeeeeee';
$wpdb = $GLOBALS['wpdb'];
//==================PRIMER método======================
$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)) {
//............
}
//====================SEGUNDO método======================
$counts = $wpdb->get_var($wpdb->prepare("SELECT count(post_name) FROM ".$wpdb->posts ." WHERE post_name like '%s'", $slug) );
if ($counts >=1 ) {
//.............
}
