Tricks: geplante Seite in Menü versteckt vorbereiten

Aus Wordpresswiki
Zur Navigation springen Zur Suche springen

Ergebnis [von wpde.org forum ]

Zwei Dinge tauchten auf:

  • wenn eine Seite geplant wird, kann sie nicht ins Menü eingebunden werden (ist noch nicht in der Liste)
  • wenn eine Seite veröffentlich wird, und ins Menü eingebunden wird und dann auf geplant gesetzt wird, bleibt dieser Eintrag im Navigationsmenü

Die Lösung sind nachfolgende Filter: Im Block alle Seiten beim Menübearbeiten werden nicht nur die Veröffentlichten sonder auch die Geplanten Seiten angezeigt, dadurch sind diese Seiten in das Menü bereits integrierbar.

function add_scheduled_pages($posts, $args, $post_type) {
   $query = new WP_Query(
       array(
           'post_type' => 'page',
           'post_status' => array('publish', 'future')
       )
   );
   $posts = $query->posts;
   return $posts;
}
add_filter( 'nav_menu_items_page', 'add_scheduled_pages', 10, 3 );

Und nun werden die Seiten die geplant sind im Nav Menü nicht angezeigt, bis das der Veröffentlich Zeitpunkt eintrifft

function remove_future_pages($sorted_menu_items, $args) {
   $filter_futures = array_filter($sorted_menu_items, function($item) {
       if(get_post_status($item->object_id) !== 'future') {
           return $item;
       }
   });
   return $filter_futures;
}
add_filter( 'wp_nav_menu_objects', 'remove_future_pages', 10, 2 );

Getest und als Interessant beurteilt Franz Wieser