Проверка слага на существование.
-
Есть ли какая-то функция WordPress API которая проверяет существование слага, или для проверки надо смотреть в базу.
-
Нет, по ссылке получение записи по слагу, мне же надо проверить существует слаг или нет.
то есть передать слаг и получить true или false, причем не у записи а вообще.
как я понял все слаги должны быть уникальными
как я понял все слаги должны быть уникальными
Слаги проверяются движком (перед сохранением/публикацией записи) на уникальность
https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/post.php#L3390
Если слаг имеет «двойника», то к нему добавляется числовой суффикс.Д http://codex.wordpress.org/Function_Reference/wp_unique_post_slug
я знаю, я добавляю из текстового файла записи в рубрики и присваиваю метки
Если рубрики нет я ее добавляю, если метки нет я ее добавляю, в итоге возникает ситуация, например я проверяю по слагу есть ли рубрика в которую надо добавить запись, если она есть, то добавляю, если нет то создаю, если же предварительно создалась метка с таким слагом, то создается рубрика slag-1, затем получая этот же слаг создаться рубрика slug — 2, и т. д.
я знаю
А в чём вопрос тогда? )
Нет, по ссылке получение записи по слагу, мне же надо проверить существует слаг или нет.
А в чём разница? Если получен пустой массив — значит, ярлыка не существует.
то есть передать слаг и получить true или false
$slug_exists = (bool) get_posts( array( 'name' => 'my-slug' ) );причем не у записи а вообще
Для типов записей можно добавить
'post_type' => 'any':$slug_exists = (bool) get_posts( array( 'name' => 'my-slug', 'post_type' => 'any' ) );Для таксономий:
$slug_exists = (bool) get_terms( get_taxonomies(), array( 'slug' => 'my-slug' ) );как я понял все слаги должны быть уникальными
У страниц могут повторяться ярлыки, если они находятся в разных ветвях иерархии (т.е. являются дочерними для разных родительских страниц).
У разных типов записей и таксономий ярлыки не пересекаются.
я проверяю по слагу есть ли рубрика в которую надо добавить запись
Тогда можно воспользоваться функцией get_term_by().
Всё это стоило написать в исходном вопросе, чтобы не приходилось гадать 🙂
В данный момент проверяю так,
$cats = get_category_by_slug($cat_slug); // передаваемый слаг получен после разбора текстового файла if(!empty( $cats ) ) { $id_cat = $cats->term_id; } else { $catarr = array( 'cat_name' => $rashirenie_itog, 'category_nicename' => $cat_slug ); $id_cat = wp_insert_category($catarr); $count_new_cat++; echo '<h3>Добавленна категория - ' . $rashirenie_itog . '</h3>'; }как понял
$slug_exists = (bool) get_terms( get_taxonomies(), array( 'slug' => 'my-slug' ) );вот это проверит наличие слага по всем таксониям, так?
Тема «Проверка слага на существование.» закрыта для новых ответов.