Как установить slug записи при использовании wp_insert_post();?

16 авг. 2017 г., 16:11:23
Просмотры: 14.3K
Голосов: 18

Моя тема использует пользовательский шаблон для отображения контента. Чтобы использовать этот шаблон, я добавляю хук на after_switch_theme для создания своей страницы после активации темы и затем назначаю ей этот шаблон.

Вот как я это делаю:

$new_page_title = __('Пользовательская страница');
$new_page_content = '';
$new_page_template = 'page-custom.php';
$page_check = get_page_by_title($new_page_title);
$new_page = array(
        'post_type' => 'page',
        'post_title' => $new_page_title,
        'post_content' => $new_page_content,
        'post_status' => 'publish',
        'post_author' => 1,
        'post_slug' => 'my-custom-slug'
);
if( !isset($page_check->ID) ){
    $new_page_id = wp_insert_post($new_page);
    if(!empty($new_page_template)){
        update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
    }
}

Однако slug страницы всегда соответствует заголовку. Это значит, что slug всегда будет custom-page. Похоже, что wp_insert_post() не поддерживает прямое указание slug, так как в документации этого параметра нет.

Мне нужно установить slug, потому что заголовок страницы очень распространённый, и может уже существовать другая страница с таким же slug.

Как это можно сделать?

0
Все ответы на вопрос 1
1
32

Параметр для вставки пользовательского слага:

'post_name' => 'my-custom-slug'

А не post_slug, как можно было бы подумать! :)

16 авг. 2017 г. 16:24:41
Комментарии

Обратите внимание, что если запись с таким slug уже существует, wp_insert_post создаст новую запись с автоматически сгенерированным post_name

Flimm Flimm
13 июл. 2022 г. 17:26:43