Поддержка Проблемы и решения Не получается указать свой url страницы

  • Решено baksdev

    (@baksdev)


    Добрый день, в настройках выбраны цифры.Url пытаюсь указать 445, но после попытки опубликовать url превращается в 445-2. Как это исправить? Потому что необходимо создавать страницы с определенными url чтобы не потерять позиции в seo

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Автор baksdev

    (@baksdev)

    Пытался найти решение, но всё что я находил было связано с дублирующими страницами, у меня на сайте нет других страниц и -2 появляется только если пытаться задать Url цыфрами

    Модератор Yui

    (@fierevere)

    永子

    потому что нельзя
    https://core.trac.wordpress.org/ticket/11917

    но если очень хочется , то можно

    add_filter( 'wp_unique_post_slug', 'mg_unique_post_slug', 10, 6 );
     
    /**
     * Allow numeric slug
     *
     * @param string $slug The slug returned by wp_unique_post_slug().
     * @param int $post_ID The post ID that the slug belongs to.
     * @param string $post_status The status of post that the slug belongs to.
     * @param string $post_type The post_type of the post.
     * @param int $post_parent Post parent ID.
     * @param string $original_slug The requested slug, may or may not be unique.
     */
    function mg_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) {
     global $wpdb;
     
    // don't change non-numeric values
     if ( ! is_numeric( $original_slug ) || $slug === $original_slug ) {
     return $slug;
     }
     
    // Was there any conflict or was a suffix added due to the preg_match() call in wp_unique_post_slug() ?
     $post_name_check = $wpdb->get_var( $wpdb->prepare(
     "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( %s, 'attachment' ) AND ID != %d AND post_parent = %d LIMIT 1",
     $original_slug, $post_type, $post_ID, $post_parent
     ) );
     
    // There really is a conflict due to an existing page so keep the modified slug
     if ( $post_name_check ) {
     return $slug;
     }
     
    // Return our numeric slug
     return $original_slug;
    }
    Модератор Yuri

    (@yube)

    Вордпресс не допускает существование слагов, состоящих из одних только цифр, потому что такие части urlов зарезервированы для подстраниц (разбивка <!--nextpage-->). В Сети можно найти трюки, позволяющие делать цифровые слаги (numeric slug), но они либо уже не работают, либо могут прекратить работать в любой момент.

    Автор baksdev

    (@baksdev)

    Я начинающий поэтому еще один вопрос остался, данный код надо в определенный .php поместить или отдельный создать? Если отдельно, то потребуется ли его потом дополнительно подключать или он автоматически начнет работать?

    Модератор Yui

    (@fierevere)

    永子

    можете проверить работает ли он, поместив его в functions.php активной темы,

    но чтобы в будущем не потерять его при обновлении темы, то можно сделать его отдельным плагином (php факлик в /wp-content/plugins)
    или воспользоваться
    https://ru.wordpress.org/plugins/code-snippets/

    Автор baksdev

    (@baksdev)

    Спасибо

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Не получается указать свой url страницы» закрыта для новых ответов.