如何在使用wp_INSERT_POST();时设置POST slug?

时间:2017-08-16 作者:Johansson

我的主题使用自定义模板呈现某些内容。要使用此模板,我将after_switch_theme 在主题激活后创建我自己的页面,然后将此模板分配给它。

我就是这样做的:

$new_page_title = __(\'Custom page\');
$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始终位于标题之后。这意味着子弹总是custom-page. 似乎是wp_insert_post() 不支持post-slug,因为代码引用中没有任何。

我需要设置slug,因为页面的标题非常流行,可能还有另一个页面已经存在相同的slug。

我该怎么做?

1 个回复
最合适的回答,由SO网友:mayersdesign 整理而成

插入自定义段塞的参数为:

\'post_name\' => \'my-custom-slug\'
不是post_slug 正如人们所想!:)

结束

相关推荐

Remove and change pages label

我想更改搜索页面标签并删除项目数。我还想修改页面列表中可见页面的数量,现在是20页。解决方案:function wpd_change_page_labels( $labels ) { $labels->search_items = \'put the new name\'; return $labels; } add_filter( \'post_type_labels_page\', \'wpd_change_page_labels\'