Benutzerdefinierte Schleife im Seiten-Admin, die andere Felder zum Fehlschlagen veranlasst

Ich habe eine benutzerdefinierte Schleife im Seitenverwaltungsbereich erstellt, um einen benutzerdefinierten Posttyp namens “Widgets” für diese Seite zu verwalten.

$ps_widget_list = get_post_meta( $post_id, 'ps_widget_list', true ); //first get the list of current widgets $active_widget_array = explode( ', ', $ps_widget_list ); //then separate those widgets into an array of active widgets // this array is for the UI. It will build a list of all the widgets // then based on the array of active widgets, will separate them into // two different arrays to be used later $widgets_array = array( 'active' => array(), 'inactive' => array() ); //get all the widgets $args = array( 'post_type' => 'ps_widgets', 'posts_per_page' => '-1' ); $the_query = new WP_Query( $args ); while ( $the_query->have_posts() ) : $the_query->the_post(); // loop through the widgets $widget_id = get_the_ID(); // if the widget's id is in the array of active widgets // mark it as active, if not mark as inactive and store to the array $key = ( in_array( $widget_id, $active_widget_array) ) ? 'active' : 'inactive'; $widgets_array[ $key ][ $widget_id ] = array( 'id' => $widget_id, 'title' => get_the_title( $widget_id ) ); endwhile; wp_reset_postdata(); 

Das Problem tritt auf, wenn ich versuche, einen SEO-Titel, eine Beschreibung oder Schlüsselwörter in einem SEO-Plugin hinzuzufügen. Ich habe das sowohl auf Yoast als auch auf All in One versucht. Nachdem ich verschiedene Codeabschnitte deaktiviert hatte, beschränkte ich das Problem auf diese Schleife. Ich habe auch versucht, die Variablen zu benennen, aber kein Glück. Ich nehme an, es ist ein Problem mit der Schleife aufgerufen, irgendwelche Vorschläge?

Solutions Collecting From Web of "Benutzerdefinierte Schleife im Seiten-Admin, die andere Felder zum Fehlschlagen veranlasst"

Die Schleife wurde von WP_Query auf get_posts umgeschaltet.

Ich stieß auch auf side effects mit der Verwendung von WP_Query in wordpress admin .

Ich habe zwei Wp_Query in einer benutzerdefinierten Metabox verwendet, was gut funktioniert hat, aber später entdeckte ich zwei seltsame Probleme:

  • der Pfahl der Post wurde automatisch auch für die neue Post gesetzt
  • Das vorgestellte Bild wurde automatisch wie das Slug-Bild eingestellt und das neue Bild wurde nicht gespeichert

Nach einigen Stunden Debugging habe ich eine Lösung mit wp_reset_query(); Dies hat das Problem jedoch nicht vollständig getriggers. Trotzdem konnte das vorgestellte Bild nicht gespeichert werden. Was zum * * war falsch?

Dann kam ich auf diese Lösung. Use native PHP code und Don't mess with WP template tags , z.

 $your_loop= new WP_Query($args); 

Anstatt von

  if( $your_loop->have_posts()){ while ($your_loop->have_posts()) { //the_title(); ... //WP loop template tags } } 

benutze folgendes:

  if( count($your_loop->posts) > 0) { foreach( $your_loop->posts as $item_post) { //$item_post->post_title // see other available using print_r($item_post) // } }