Custom Next and Previous Links Auf aufgerufenen Seiten soll am Ende eine Navigation zur vorherigen und zur nächsten Seite angezeigt werden: Sie Navigation soll sich der Menüordnung anpassen, die im WordPress Admincenter eingestellt werden kann: Die vordefinierten Funktionen previous_post_link und next_post_link können diese Funktion leider nicht liefern. Nutzung von Filter Hooks Darum muss man sich mit sogenannten „Hooks“ weiterhelfen: Hooks are a way for one piece of code to interact/modify another piece of code at specific, pre-defined spots. They make up the foundation for how plugins and themes interact with WordPress Core, but they’re also used extensively by Core itself.https://developer.wordpress.org/plugins/hooks/ Für unser Beispiel nutzen wir einen Filter, der wenn aufgerufen, einen von uns erstellten Filter über die core Methode von WordPress schiebt. Hier ein Beispiel: function wporg_filter_title( $title ) { return 'The ' . $title . ' was filtered'; } add_filter( 'the_title', 'wporg_filter_title' ); Diesen „Filter“ kann man in functions.php einfügen und er macht Folgendes: Wenn man den Seitentitel mit der Funktion „the_title()“ aufruft, wird dieser Filter aufgerufenEs wird nicht nur der Titel der Seite zurückgegeben, sondern auch „The … was filtered.„ Alle möglichen Filterparameter, wie hier „the_title“ kann man unter Plugin API/Filter Reference finden. Eigenen Filter Hook bauen Die Idee und der Code des Filters kommt von 1fix.io. Folgenden Code kann man in functions.php einfügen. Im Anschluss … /** * custom page hooks for displaying next/previous posts by menu order */ function my_previous_post_where() { global $post, $wpdb; return $wpdb->prepare( "WHERE p.menu_order < %s AND p.post_type = %s AND p.post_parent = %s AND p.post_status = 'publish'", $post->menu_order, $post->post_type, $post->post_parent); } // überschreibt "get_previous_post_where" add_filter( 'get_previous_post_where', 'my_previous_post_where' ); function my_next_post_where() { global $post, $wpdb; return $wpdb->prepare( "WHERE p.menu_order > %s AND p.post_type = %s AND p.post_parent = %s AND p.post_status = 'publish'", $post->menu_order, $post->post_type, $post->post_parent); } // überschreibt "get_next_post_where" add_filter( 'get_next_post_where', 'my_next_post_where' ); function my_previous_post_sort() { return "ORDER BY p.menu_order desc LIMIT 1"; } // überschreibt "get_previous_post_sort" add_filter( 'get_previous_post_sort', 'my_previous_post_sort' ); function my_next_post_sort() { return "ORDER BY p.menu_order asc LIMIT 1"; } // überschreibt "get_next_post_sort" add_filter( 'get_next_post_sort', 'my_next_post_sort' ); Diese Filter testen nun immer, ob die Funktionen previous_post_link und next_post_link aufgerufen werden und filtern das Ergebnis entsprechend des oben erstellten Codes. Hier z.B.: der Aufruf in page.php: <div id="pageNavigationFooter"> <?php previous_post_link(); ?> <?php next_post_link(); ?> </div> Links Plugin API/Filter Reference mit allen Filter HooksGet the right prev/next post link when order posts by menu_orderCan the Next/Prev Post links be ordered by menu order or by a meta key? unsere-schule.org × Custom Next and Previous Links Code: Infos: unsere-schule Codes