Je veux avoir un élément de menu qui, en un clic, ajoutera une page avec certains arguments.
Dans sa simplicité, j'ai:
function av_subscribe_create_menu(){
// Create top-level menu
add_menu_page( 'Add Comment Feed', 'Add Comment Feed', 'manage_options', __FILE__,
'av_subscribe_create_feed_page', '' );
}
add_action( 'admin_menu', 'av_subscribe_create_menu' );
function av_subscribe_create_feed_page(){
$page = array(
'post_type' => 'page',
'post_status' => 'publish',
'post_parent' => 13570
);
$new_page_id = wp_insert_post($page, false);
}
Cela ne fonctionne pas et même si cela fonctionnait, je ne crois pas que cela me mènerait à l'écran d'édition. Existe-t-il un moyen d'utiliser une fonction pour ajouter un message et accéder directement à l'écran d'édition?
Question bonus également: si vous ne spécifiez pas de titre, mais que vous spécifiez le post_status comme publication, cela créera-t-il automatiquement un slug pour vous? Je ne veux pas d'un slug auto-généré d'un charabia. Merci d'avance.
add_action( 'admin_menu', 'av_subscribe_create_menu' );
function av_subscribe_create_menu()
{
$hook = add_menu_page(
'Add Comment Feed',
'Add Comment Feed',
'manage_options',
'av-create-feed', // Don't use __FILE__ as the slug, keep it short 'n sweet!
'__return_true' // We need a callback otherwise WP won't properly handle the page, though it's never seen
);
if ( $hook ) // Current user has the right caps
add_action( "load-$hook", 'av_subscribe_create_feed_page' ); // This runs before header output
}
function av_subscribe_create_feed_page()
{
$page_id = wp_insert_post( array(
'post_status' => 'publish',
'post_parent' => 13570,
'post_title' => 'My Title',
'post_type' => 'page',
));
if ( $edit_url = get_edit_post_link( $page_id, 'raw' ) )
wp_redirect( $edit_url );
else
wp_redirect( admin_url( "edit.php?post_type=page" ) ); // Fallback
exit;
}
Si vous ne spécifiez pas de titre, mais que vous spécifiez post_status comme publication, cela créera-t-il automatiquement un slug pour vous?
Ce sera certainement le cas! Vérifiez le code source pour wp_insert_post()
.