Ich verwende einen benutzerdefinierten Suchfilter (mit meiner benutzerdefinierten Abfrage var type
), wie folgt:
function fteh_pre_get_posts( $query ){
if( isset( $query->query_vars['type'] ) )
$types = explode( ',', $query->query_vars['type'] );
$query->set( 'post_type', $types );
return $query;
}
if ( ! is_admin() ) {
add_action( 'pre_get_posts', 'fteh_pre_get_posts' );
}
Ich habe festgestellt, dass dadurch ein registriertes benutzerdefiniertes Menü ausgeblendet wird.
Ohne die !is_admin()
hat es auch den Menü-Builder verwirrt (es wurden einige Posts anstatt aller meiner Seiten im Abschnitt Pages angezeigt). Das Hinzufügen der Bedingung half dabei, aber ich kann nicht herausfinden, wie ich mein Menü zurückholen kann.
Es wurde ordnungsgemäß registriert und aufgerufen, erstellt und an der richtigen Themenposition gespeichert und vor dem Hinzufügen dieses Filters funktioniert. Jetzt wird nur noch der fallback_cb
(in meinem Fall der Standard-wp_page_menu
) anstelle meines benutzerdefinierten Menüs verwendet.
Sobald ich diese Aktion von pre_get_posts
entferne, ist alles wieder normal.
Ich verstehe nicht, in welcher Beziehung pre_get_posts
hook zu den benutzerdefinierten Menüs steht. Weiß jemand, warum dies zu einem so seltsamen Verhalten führen würde?
UPDATE:
Ich habe jetzt ein anderes Problem entdeckt, das speziell durch das oben genannte Snippet verursacht wurde - alle meine benutzerdefinierten Abfragen auf Seiten (einfache Dinge wie query_posts('post_type=organization')
) funktionierten nicht mehr und zeigten normale Beiträge anstelle der in query_posts
eingerichteten benutzerdefinierten Beitragstypen an.
Verwenden Sie is_main_query()
, um nur die Hauptabfrage zu ändern, damit das Menü nicht beeinträchtigt wird.
Versuchen Sie dies:
add_action( 'pre_get_posts', 'fteh_pre_get_posts' );
function fteh_pre_get_posts( $query ){
if( !is_admin() && $query->is_main_query() && isset( $query->query_vars['type'] ) )
$types = explode( ',', $query->query_vars['type'] );
$query->set( 'post_type', $types );
return $query;
}
Es könnte sein, dass ich ein wenig zu spät zur Party komme, aber das ist es, was ich getan habe, um mein Problem zu beheben, dass das Menü verschwindet, wenn ich benutzerdefinierte Beiträge nach Kategorie ansehe. Ich verwende Standardpostkategorien und keine benutzerdefinierten Taxonomien.
public function include_custom_post_search( $query ) {
if( ! is_admin() ) {
if( is_category() && 'nav_menu_item' !== $query->get('post_type') )
$query->set( 'post_type', 'custom_post_place_slug' );
}
}
add_action( 'pre_get_posts', 'include_custom_post_search' );