Weist man einem Custom Post Type page-attributes
zu, kann die Menüreihenfolge in den entsprechenden Feldern editiert, und im Custom Query auch danach sortiert werden.
add_post_type_support( 'my_custom_type', 'page-attributes' )
$args = array(
'post_type' => 'my_custom_type',
'orderby' => 'menu_order',
'order' => 'ASC',
);
Wird allerdings nicht auch hierarchical => true
festgelegt, greift die Sortierung im Dashboard nicht. Mit dieser Funktion wird die Reihenfolge der menu_order
entsprechend angezeigt.
function set_custom_post_types_admin_order($wp_query) {
if ( is_admin() ) {
$post_type = $wp_query->query['post_type'];
if ( $post_type == 'my_custom_posttype') {
$wp_query->set('orderby', 'menu_order');
$wp_query->set('order', 'ASC');
}
}
}
add_filter( 'pre_get_posts', 'set_custom_post_types_admin_order' );
Um das Sortierkriterium auch auf die Links zum jeweils nächsten und vorherigen Beitrag zu übernehmen, sind nachfolgende Filter anzuwenden:
function pppf_pw_previous_post_where() {
global $post, $wpdb;
return $wpdb->prepare( "WHERE p.menu_order < %s AND p.post_type = %s AND p.post_status = 'publish'", $post->menu_order, $post->post_type);
}
function pppf_pw_next_post_where() {
global $post, $wpdb;
return $wpdb->prepare( "WHERE p.menu_order > %s AND p.post_type = %s AND p.post_status = 'publish'", $post->menu_order, $post->post_type);
}
function pppf_pw_previous_post_sort() {
return 'ORDER BY p.menu_order desc LIMIT 1';
}
function pppf_pw_next_post_sort() {
return 'ORDER BY p.menu_order asc LIMIT 1';
}
function pppf_pw_pagination_menu_order() {
if ( get_post_type() == 'my_custom_posttype' {
add_filter( 'get_previous_post_where', 'pppf_pw_previous_post_where' );
add_filter( 'get_next_post_where', 'pppf_pw_next_post_where');
add_filter( 'get_previous_post_sort', 'pppf_pw_previous_post_sort' );
add_filter( 'get_next_post_sort', 'pppf_pw_next_post_sort');
}
}
add_action( 'pre_get_posts', 'pppf_pw_pagination_menu_order' );
Schreibe einen Kommentar