Lassen Sie nur neue Unterseiten erstellen

Hier ist eine erstaunliche Lösung, um das Erstellen neuer übergeordneter Seiten einzuschränken, und ich möchte sie verwenden, aber die neu erstellten Unterseiten werden nur als Entwürfe gespeichert und dies wurde nicht getriggers (siehe letzte Kommentare unter dem angegebenen Link).

Das Problem ist, dass dieser Code die Seite immer als Draft speichert und ich keine Ahnung habe, wie ich das lösen kann:

 add_action( 'admin_head-post-new.php', 'wpse_59770_publish_admin_hook' ); add_action( 'admin_head-post.php', 'wpse_59770_publish_admin_hook' ); add_action( 'wp_ajax_wpse_59770_pre_submit_validation', 'wpse_59770_ajax_pre_submit_validation' ); function wpse_59770_publish_admin_hook() { global $current_screen; if( 'page' != $current_screen->post_type ) return; ?>  jQuery(document).ready(function() { jQuery('#publish').click(function() { var form_data = jQuery('#parent_id').val(); form_data = ( '' != form_data ) ? '1' : '0'; var data = { action: 'wpse_59770_pre_submit_validation', security: '', form_data: form_data }; jQuery.post(ajaxurl, data, function(response) { // OK, save page if (response=='true') { jQuery('#ajax-loading').hide(); jQuery('#publish').removeClass('button-primary-disabled'); jQuery('#post').submit(); } // Not OK, display alert message else { alert(response); jQuery('#ajax-loading').hide(); jQuery('#publish').removeClass('button-primary-disabled'); return false; } }); return false; }); });   'page', 'post_parent'=> 0, 'numberposts' => -1 ); $parents_total = get_posts( $args ); // Total parents is less than 9, no further action if( count($parents_total) < 9 ) { echo 'true'; die(); } // No more parents allowed else { $error = "No more Parent Pages allowed"; echo $error; die(); } } 

Solutions Collecting From Web of "Lassen Sie nur neue Unterseiten erstellen"

Sie brauchen eigentlich keine Ajax- oder Server-Side-Action, sondern einfach, ob der Benutzer eine übergeordnete Seite ausgewählt hat:

 add_action( 'admin_head-post-new.php', 'publish_admin_hook_wpse_78690' ); add_action( 'admin_head-post.php', 'publish_admin_hook_wpse_78690' ); function publish_admin_hook_wpse_78690() { global $current_screen; if( 'page' != $current_screen->post_type ) return; ?>  < ?php } 

Ich benutze Lock Pages Plugin. Lock Pages verhindert, dass bestimmte Seiten (oder alle Seiten) von einem Nicht-Administrator bearbeitet werden können, ob ihr Slug, Parent, Status oder Passwort bearbeitet oder gelöscht wird. http://wordpress.org/extend/plugins/lock-pages/