WordPress: previous/next_post_link() korrigieren wenn nach menu_order sortiert wird

WordPress verfügt über die Möglichkeit, Inhalte auf der Website in der gleichen Reihenfolge anzuzeigen, in der sie im Backend sortiert wurden. Gebt ihr jedoch die Beiträge eines »Custom Post Types« aus, werdet ihr merken, dass die WordPress Pagination auf die falschen Beiträge verlinkt. Wir zeigen euch, wie ihr das Problem umgeht.

WordPress-Pagination anpassen

Die Navigation von einem Beitrag zum nächsten bzw. zum vorherigen wird in WordPress mit der Funktion previous_post_link() bzw. mit next_post_link() realisiert. Wenn ihr jedoch anstelle der normalen Beiträge einen »Custom Post Type« anzeigt, und diesen mithilfe von menu_order im Frontend in der Reihenfolge anzeigt, die der Anwender im Backend eingestellt hat, werdet ihr feststellen, dass der nächste/vorherige Beitrag anhand des Datums angezeigt wird. Das ist falsch.

Folgendes Snippet, eingefügt in die functions.php, löst das Problem:

function kb_custom_adjacent_post_where($sql) {
 if ( !is_main_query() || !is_singular() )
 return $sql;
 $the_post = get_post( get_the_ID() );
 $patterns = array();
 $patterns[] = '/post_date/';
 $patterns[] = '/\'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\'/';
 $replacements = array();
 $replacements[] = 'menu_order';
 $replacements[] = $the_post->menu_order;
 return preg_replace﹙ $patterns, $replacements, $sql ﹚;
}

add_filter( 'get_next_post_where', 'kb_custom_adjacent_post_where' ); 
add_filter( 'get_previous_post_where', 'kb_custom_adjacent_post_where' ); 

function kb_custom_adjacent_post_sort($sql) { 
 if ( !is_main_query() || !is_singular() ) 
 return $sql; 
 $pattern = '/post_date/'; $replacement = 'menu_order'; 
 return preg_replace﹙ $patterns, $replacements, $sql ﹚;
} 

add_filter( 'get_next_post_sort', 'kb_custom_adjacent_post_sort' ); 
add_filter( 'get_previous_post_sort', 'kb_custom_adjacent_post_sort' );

Geschrieben von:

Raimund Büchner

Benutzerbild

Raimund ist oft die erste Ansprechperson bei kulturbanause. Er kümmert sich hauptsächlich um die Betreuung und Beratung unserer bestehenden als auch künftigen Kundschaft. Ein weiterer Schwerpunkt seiner Tätigkeit liegt im Design nicht unmittelbar sichtbarer Dinge: Struktur und Inhalte. Projekte unterstützt er daher vor allem in der Anfangsphase in Bereichen wie Informationsarchitektur, UX-Design und Content Strategy.

Jonas Hellwig

Benutzerbild

Jonas ist Gründer von kulturbanause und des kulturbanause Blogs. Er arbeitet an der Schnittstelle zwischen UX/UI Design, Frontend und Redaktion und hat zahlreiche Fachbücher und Video-Trainings veröffentlicht. Jonas Hellwig ist regelmäßig als Sprecher auf Fachveranstaltungen anzutreffen und unterstützt mit Seminaren und Workshops Agenturen und Unternehmen bei der Planung, der Gestaltung und der technischen Umsetzung von Web-Projekten.

Jonas Hellwig bei Xing

Feedback & Ergänzungen – Schreibe einen Kommentar

Kommentar zu dieser Seite

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Schulung + Beratung