(Custom) Post Types | Hooks und Filter | PHP

WordPress – menu_order-Sortierung bei nicht hierarchischen Inhaltstypen

archive 1850170 1920

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' )
Code-Sprache: JavaScript (javascript)
$args = array( 'post_type' => 'my_custom_type', 'orderby' => 'menu_order', 'order' => 'ASC', );
Code-Sprache: PHP (php)

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' );
Code-Sprache: PHP (php)

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' );
Code-Sprache: PHP (php)

weiter schmökern

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.