Использование ID вместо слага в дружественном URL для заказов – пример PHP кода

Использование ID вместо слага в дружественном URL для типа поста – “POSTTYPE/ID”

В этой статье мы рассмотрим, как настроить дружественные URL для кастомного типа поста, например, для заказов. Мы будем использовать ID поста вместо слага в URL.

Настройка кастомного типа поста

Когда вы регистрируете свой тип поста, например 'orders', с помощью функции register_post_type(), помните, что если параметр rewrite установлен в false, то правила перезаписи не создаются автоматически и их нужно настраивать вручную.

URL должен выглядеть следующим образом:
example.com/orders/123, где 123 — это ID поста.

Пример кода

Вот пример, как можно настроить URL:

add_action( 'init', function() {

    // Создание правил для дружественного URL
    add_rewrite_tag( '%order_id%', '([0-9]+)', "post_type=orders&p=" );

    // Регистрация структуры для типа поста
    add_permastruct( 'orders', 'order/%order_id%', array(
        'with_front'  => false,
        'paged'       => false,
        'feed'        => false,
        'forcomments' => false,
        'walk_dirs'   => false,
        'endpoints'   => false,
    ) );

    // Замена слага в URL на ID
    add_filter( 'post_type_link', 'orders_permalink', 1, 2 );

    function orders_permalink( $permalink, $post ) {
        // Проверяем, содержит ли адрес URL %order_id%
        if( false === strpos( $permalink, '%order_id%' ) ){
            return $permalink; // Если нет, возвращаем оригинальный permalink
        }

        // Заменяем %order_id% на настоящий ID поста
        return str_replace( '%order_id%', $post->ID, $permalink );
    }

});

Объяснение кода

  1. add_rewrite_tag: Эта функция создает новый тег для URL, который будет использоваться для передачи ID заказа.

  2. add_permastruct: Здесь мы определяем структур�� нашего URL, указывая, что вместо слова "order" должен появляться ID заказа.

  3. add_filter: Этот фильтр позволяет изменять формат ссылки на пост, чтобы вместо %order_id% ставился фактический ID.

Заключение

Теперь, когда вы настроили свои URL, ссылки на заказы будут выглядеть более дружелюбно и будут включать ID вашего поста. Это упрощает работу с URL и улучшает их читаемость.

Если у вас возникнут вопросы или потребуется помощь, не стесняйтесь обращаться к документации WordPress!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *