• Есть ли какая-то функция WordPress API которая проверяет существование слага, или для проверки надо смотреть в базу.

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Автор MaksimNikolaevich

    (@maksimnikolaevich)

    Нет, по ссылке получение записи по слагу, мне же надо проверить существует слаг или нет.

    то есть передать слаг и получить 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

    Автор MaksimNikolaevich

    (@maksimnikolaevich)

    я знаю, я добавляю из текстового файла записи в рубрики и присваиваю метки

    Если рубрики нет я ее добавляю, если метки нет я ее добавляю, в итоге возникает ситуация, например я проверяю по слагу есть ли рубрика в которую надо добавить запись, если она есть, то добавляю, если нет то создаю, если же предварительно создалась метка с таким слагом, то создается рубрика slag-1, затем получая этот же слаг создаться рубрика slug — 2, и т. д.

    я знаю

    А в чём вопрос тогда? )

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Нет, по ссылке получение записи по слагу, мне же надо проверить существует слаг или нет.

    А в чём разница? Если получен пустой массив — значит, ярлыка не существует.

    то есть передать слаг и получить 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' ) );

    как я понял все слаги должны быть уникальными

    У страниц могут повторяться ярлыки, если они находятся в разных ветвях иерархии (т.е. являются дочерними для разных родительских страниц).

    У разных типов записей и таксономий ярлыки не пересекаются.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    я проверяю по слагу есть ли рубрика в которую надо добавить запись

    Тогда можно воспользоваться функцией get_term_by().

    Всё это стоило написать в исходном вопросе, чтобы не приходилось гадать 🙂

    Автор MaksimNikolaevich

    (@maksimnikolaevich)

    В данный момент проверяю так,

    $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' ) );

    вот это проверит наличие слага по всем таксониям, так?

Просмотр 8 ответов — с 1 по 8 (всего 8)

Тема «Проверка слага на существование.» закрыта для новых ответов.