Use algún tipo de etiqueta condicional para verificar si esas publicaciones existen o no. Si no existen, haga que se creen con wp_insert_post
. Haga esta lógica dentro de la función AddMyPages
y no alrededor de la función add_action
.
Ejemplo
Desea agregar una página con una identificación principal solo si no existe, y desea que esta página siempre exista. Ya que está en el gancho init
, siempre verificará si esa página existe, por lo que no se recomienda hacerlo de esta manera. En realidad, debes hacer esto al activar de un complemento (por lo que he editado mi respuesta para ese método).
register_activation_hook( __FILE__, 'AddThisPage' );
function AddThisPage() {
global $wpdb; // Not sure if you need this, maybe
$page = array(
'post_title' => 'My post',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'page',
'post_parent' => 3 // ID of the parent page
);
$page_exists = get_page_by_title( $page['post_title'] );
if( $page_exists == null ) {
// Page doesn't exist, so lets add it
$insert = wp_insert_post( $page );
if( $insert ) {
// Page was inserted ($insert = new page's ID)
}
} else {
// Page already exists
}
}
Gracias a @kaiser por recordarme, register_activation_hook
solo se ejecuta en complementos , no en temas.
En cuanto a un tema, bueno, no conozco un gancho de activación oficial, solo switch_theme
, pero eso se ejecuta antes de que el tema esté activo. Encontré una solución aquí pero puede estar fuera de fecha, podría ser algo útil para examinar.
Recursos utilizados
wp_insert_post , get_pageby.org , register_activation_hook