Перезапись слага пользовательского типа записи WordPress

Вопрос или проблема

Я хочу изменить slug пользовательского типа записи. Я использовал этот фрагмент кода, но он не работает.

add_filter( 'register_post_type_args', 'wpse247328_register_post_type_args', 10, 2 );
function wpse247328_register_post_type_args( $args ) {

    if ( 'stores' === $post_type ) {
        $args['rewrite']['slug'] = 'location';
    }

    return $args;
}

Я сталкивался с похожей проблемой некоторое время назад и решил ее, следуя этому гиду.

По сути, что вам нужно сделать, это две функции: 1) Пользовательское правило перезаписи WordPress и 2) Ссылка на пользовательский тип записи.

Функция правила перезаписи обеспечит корректную обработку пользовательского slug для вашего CPT на всем сайте. А вторая функция обеспечит отображение URL так, как вам нужно – вы также можете включить переменные таксономии, если хотите. В любом случае, посмотрите на статью, так как она сильно помогла мне, и я надеюсь, что она поможет и вам.

Только на действие перезаписи slug в вашем коде пользовательского типа записи?

$rewrite = array(
        'slug'                  => 'Ваш-новый-slug',
        'with_front'            => true,
        'pages'                 => true,
        'feeds'                 => true,
    );

Согласно исходному коду, это явно связано с отсутствующим аргументом
https://developer.wordpress.org/reference/hooks/register_post_type_args/
Просто добавьте $post_type в качестве второго параметра в вашу функцию

add_filter( 'register_post_type_args', 'wpse247328_register_post_type_args', 10, 2 );
function wpse247328_register_post_type_args( $args, $post_type ) {
    if ( 'stores' === $post_type ) {
        $args['rewrite']['slug'] = 'location';
    }
    return $args;
}

Еще одна вещь, пожалуйста, установите WP_DEBUG в true во время работы на локальном сервере, чтобы видеть все предупреждения.

Ответ или решение

Для изменения слага пользовательского типа записи в WordPress вы можете использовать фильтр register_post_type_args, а также убедиться, что вы правильно передаете параметры в функцию. В вашем первоначальном коде отсутствовал один важный параметр – это $post_type. Давайте исправим это и предоставим вам более полное решение проблемы.

Исправленный код

Вот правильный код, который вы можете использовать для изменения слага вашего пользовательского типа записи:

add_filter( 'register_post_type_args', 'wpse247328_register_post_type_args', 10, 2 );
function wpse247328_register_post_type_args( $args, $post_type ) {
    if ( 'stores' === $post_type ) {
        $args['rewrite'] = array(
            'slug' => 'location', // Новый слаг
            'with_front' => true,
            'pages' => true,
            'feeds' => true,
        );
    }
    return $args;
}

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

  1. Фильтр: Мы используем хук register_post_type_args, чтобы изменить аргументы, переданные при регистрации типа записи.

  2. Параметры: Ваша функция принимает два параметра: $args – массив аргументов пользовательского типа записи, и $post_type – строку, представляющую название регистрационного типа записи (в данном случае это ‘stores’).

  3. Изменение слага: Мы проверяем, совпадает ли $post_type с ‘stores’, и если это так, изменяем 'rewrite'['slug'] на ‘location’.

Дополнительные шаги

После внесения изменений в ваш код, не забудьте выполнить следующие действия:

  1. Сброс пермалинков: Перейдите к Настройки > Постоянные ссылки в админ-панели WordPress и просто нажмите "Сохранить изменения". Это необходимо для того, чтобы обновить правила перезаписи в WordPress.

  2. Проверка на ошибки: Если вы работаете в локальной среде, рекомендуется установить WP_DEBUG в true в файле wp-config.php, чтобы отображать все предупреждения и ошибки. Это поможет вам быстрее находить и исправлять ошибки в коде.

  3. Проверка работы: После внесения изменений попробуйте создать новый пост в своем пользовательском типе записи и убедитесь, что ссылка выглядит так, как вы ожидаете (например, вашсайт.com/location/пост).

Следуя этим шагам и правильно применяя код, вы сможете успешно изменить слаг вашего пользовательского типа записи в WordPress.

Оцените материал
Добавить комментарий

Капча загружается...