Intereting Posts

Приращение порядка страниц при создании страниц

В панели администратора есть способ подключиться к созданию страницы и увеличить номер страницы страницы на каждой странице или быть равно количеству страниц. Сейчас по умолчанию 0 и когда я создаю новую страницу, я бы предпочел бы ее в нижней части списка, чем в верхней части.

Solutions Collecting From Web of "Приращение порядка страниц при создании страниц"

Следующее – это возможное решение, но для его подтверждения требуется некоторое тестирование. Он запускается только в том случае, если menu_order == 0 и если он не является автоматической черновикой или menu_order == 0

 add_action( 'save_post', 'incremental_save_wpse_113767', 10, 2 ); function incremental_save_wpse_113767( $post_id, $post_object ) { if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if( defined( 'DOING_AJAX' ) && DOING_AJAX ) return; # Block auto-drafts and revisions # http://codex.wordpress.org/Post_Status_Transitions if( in_array( $post_object->post_status, array( 'auto-draft', 'inherit' ) ) ) return; # Menu order already set, do nothing if( 0 != $post_object->menu_order ) return; $menu_order = get_option( 'my_menu_order' ); if( !$menu_order) $menu_order = 5; // <-- Adjust to the desired initial value $post_object->menu_order = $menu_order; remove_action( 'save_post', 'incremental_save_wpse_113767' ); wp_update_post( $post_object ); add_action( 'save_post', 'incremental_save_wpse_113767', 10, 2 ); $menu_order += 5; update_option( 'my_menu_order', $menu_order ); } 

Я уверен, что это будет делать то, что вы хотите, без необходимости связываться со значением «Page Order».

 add_action( 'pre_get_posts', function($qry) { if (is_admin() && 'page' == $qry->get('post_type')) { $qry->set('orderby','ID'); $qry->set('order','ASC'); } }, 1000 ); 

Идентификаторы страниц / страниц всегда являются последовательными, поэтому, если вы заказываете идентификатор от наименьшего до самого большого, вы должны получить более новый контент внизу.

Я взял код brasofilo и улучшил его, чтобы получить последнее сообщение того же типа сообщений, чтобы menu_order значение menu_order . Таким образом, вам не нужно сохранять последнее значение параметра menu_order в параметрах. Код чуть ниже:

 function wp1234_save_post_menu_order_increment( $post_id, $post ) { if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE || defined( 'DOING_AJAX' ) && DOING_AJAX || in_array( $post->post_status, array( 'auto-draft', 'inherit' ) ) || $post->menu_order != 0 ) { return; } // Set a default menu order $menu_order = 1; // Get the previous post of the same post type $prev_post = get_posts(array( 'post_type' => $post->post_type, 'author' => get_current_user_id(), 'posts_per_page' => 1, 'orderby' => array( 'menu_order' => 'desc' ) )); // Check if there are any previous posts of the same post type if ( count( $prev_post ) > 0 ) { // Increment menu order $menu_order = $prev_post[0]->menu_order + 1; } // Update the post menu order wp_update_post(array( 'ID' => $post->ID, 'menu_order' => $menu_order )); } add_action( 'save_post', 'wp1234_save_post_menu_order_increment', 10, 2 );