Mein Design verwendet eine benutzerdefinierte Vorlage, um einige Inhalte zu rendern. Um diese Vorlage zu verwenden, rufe ich after_switch_theme
auf, um meine eigene Seite zu erstellen, nachdem das Design aktiviert wurde, und ordne sie dieser Vorlage zu.
So mache ich es:
$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);
}
}
Der Slug der Seite folgt jedoch immer dem Titel. Das heißt, der Slug ist immer custom-page
. Scheint so, als ob wp_insert_post()
post slug nicht unterstützt, da es in der Code-Referenz keine gibt.
Ich muss den Slug setzen, da der Titel der Seite sehr beliebt ist und möglicherweise bereits eine andere Seite mit demselben Slug vorhanden ist.
Wie kann ich das machen?
Der Parameter zum Einfügen eines benutzerdefinierten Slugs lautet:
'post_name' => 'my-custom-slug'
Nicht post_slug
wie man denkt! :)