wake-up-neo.net

Benutzerdefinierte Admin-Spalte verschwindet bei Verwendung von Quick Edit

Ich habe meinen Beiträgen im WP Admin eine Bildspalte hinzugefügt. Dies alles funktioniert einwandfrei, es sei denn, Sie verwenden die Schnellbearbeitungsfunktion. Beim Update verschwindet die Spalte oder wird von der Ajax-Save-Funktion nicht zurückgegeben. Die Spaltenüberschrift bleibt erhalten, aber die zu aktualisierende Zeile enthält keine Bildzelle mehr, was zu einer "leeren" Zelle am Ende der Zeile führt (alle Standardzellen werden nach links verschoben).

Ich bin mir nicht sicher, wo ich dieses Problem angehen soll, und ich hatte kein Glück, eine Antwort zu finden.

Danke für jede Hilfe.

BEARBEITEN: Hier ist der Code zum Hinzufügen der benutzerdefinierten Spalte. Der Filter und die Aktion werden im __construct des Plugins aufgerufen

    // Set featured image columns
    add_filter('manage_edit-post_columns', array($this, 'set_custom_columns'));
    add_action( 'manage_post_posts_custom_column', array( $this, 'set_custom_column_data' ), 10, 2 );

    /**
     * Function to create featured image column
     * @param $columns
     * @return array
     */
    public function set_custom_columns($columns)
    {

        if ( !is_array( $columns ) ) {
            $columns = array();
        }

        $new_columns = array();

        foreach( $columns as $key => $label ) {
            if ( $key == 'title' ) { // Put the Thumbnail column before the Title column
                $new_columns['featured-image'] = __( 'Image', $this->plugin_slug );
            }

            $new_columns[$key] = $label;
        }

        return $new_columns;
    }

    /**
     * Display custom column data
     */
    public function set_custom_column_data( $column_name, $post_id ) {

        // If featured image column and a featured image exists, display it
        if ( 'featured-image' == $column_name ) {
            if ( has_post_thumbnail( $post_id ) ) {
                echo get_the_post_thumbnail($post_id, 'thumbnail');
            }
        }
    }
4
edeneye

Ich verwende Tom McFarlins Plugin Boilerplate für die Plugins, die ich schreibe, und in der Haupt-Plugin-Datei gibt es eine bedingte Anweisung, um die Dinge im Admin so leicht wie möglich zu halten:

if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
  ...
}

Da die Schnellbearbeitungsfunktion AJAX verwendet, wurde die Spalte beim Speichern der Schnellbearbeitung nicht neu erstellt. Ändern Sie die obige Zeile in:

if ( is_admin() ) {
  ...
}

das Problem wurde behoben und die benutzerdefinierte Spalte wird beim Speichern über die Schnellbearbeitung angezeigt.

Hoffentlich hilft dies jemandem, der auf die gleiche Art von Problem stößt.

Vielen Dank.

1
edeneye