Вопрос или проблема
Я совсем нов в WordPress и хотел бы знать, что я делаю не так:
Я создал пользовательский тип поста, назовем его custom_post_type_jobs.
И у меня есть страница, которая называется jobs.
Когда я создаю пост типа custom post type, он имеет постоянную ссылку вида: …/custom_post_type_jobs/post-title.
Поскольку у меня есть шорткод на странице “jobs”, который отображает некоторые вещи, я хотел бы отобразить посты там, а при нажатии на них хочу, чтобы структура была следующей: /jobs/post-title.
Я здесь что-то упустил?
При создании пользовательского типа поста я указал следующие аргументы:
'rewrites' => array(
'slug' => 'jobs'
),
Ух ты, я только что осознал: аргумент ‘rewrites’ был неверным. Это rewrite. Спасибо всем.
Чтобы заменить структуру постоянной ссылки для пользовательского типа поста в WordPress, вы можете использовать следующий код в файле functions.php вашей темы:
add_filter( 'post_type_link', 'replace_custom_post_type_permalink', 10, 4 );
function replace_custom_post_type_permalink( $post_link, $post, $leavename, $sample ) {
if ( 'custom_post_type' === $post->post_type ) {
$slug = 'custom-post-type';
$post_link = str_replace( '%' . $post->post_type . '%', $slug, $post_link );
}
return $post_link;
}
В этом примере структура постоянной ссылки для пользовательского типа поста определяется с помощью пользовательского маркера, %custom_post_type%, в настройках постоянной ссылки. Код заменяет маркер на пользовательскую строку, custom-post-type, в постоянной ссылке для каждого поста этого пользовательского типа.
Примечание: Убедитесь, что заменили “custom_post_type” на фактическое имя вашего пользовательского типа поста и “custom-post-type” на желаемую структуру постоянной ссылки.
Ответ или решение
Чтобы заменить структуру постоянных ссылок для настраиваемого типа записи в WordPress, необходимо немного изменить предоставленный код. Сначала убедимся, что команда, создающая настраиваемый тип записи, правильно написана и настроена на использование нужной структуры URL. Далее мы объясним, как это исправить.
Шаг 1: Создание настраиваемого типа записи
Начнем с корректного создания настраиваемого типа записи в вашем functions.php
файле. Важно, чтобы в аргументах была указана правильная структура перезаписи:
function create_custom_post_type() {
register_post_type('custom_post_type_jobs', array(
'labels' => array(
'name' => __('Работы'),
'singular_name' => __('Работа'),
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'jobs'), // Здесь указываем 'rewrite', а не 'rewrites'
'supports' => array('title', 'editor', 'excerpt', 'thumbnail'),
));
}
add_action('init', 'create_custom_post_type');
Шаг 2: Перезапись постоянных ссылок
Теперь, чтобы изменить структуру постоянной ссылки, используем фильтр post_type_link
. Это позволит нам настроить формат ссылок, создавая нужную структуру /jobs/post-title
.
add_filter('post_type_link', 'replace_custom_post_type_permalink', 10, 4);
function replace_custom_post_type_permalink($post_link, $post, $leavename, $sample) {
if ('custom_post_type_jobs' === $post->post_type) { // Обратите внимание на имя типа записи
$post_link = str_replace('%custom_post_type_jobs%', 'jobs', $post_link); // Заменяем ссылку
}
return $post_link;
}
Шаг 3: Настройка свойств постоянных ссылок
После внесения изменений рекомендуется обновить настройки постоянных ссылок. Для этого:
- Перейдите в административную панель WordPress.
- Выберите раздел "Настройки" > "Постоянные ссылки".
- Ничего не меняя, просто нажмите "Сохранить изменения". Это обновит структуру ссылок и применит изменения.
Заключение
Теперь при создании настраиваемых записей (custom_post_type_jobs
) ссылки должны формироваться в виде /jobs/post-title
, что позволит вам использовать их в вашем шорткоде и других местах, где это необходимо.
Важно помнить, что настраиваемые типы записей в WordPress значительно упрощают управление контентом, и правильная настройка постоянных ссылок поможет вам улучшить SEO-оптимизацию и навигацию по вашему сайту. Применяйте данные знания для создания более понятной и удобной структуры ссылок.