web-dev-qa-db-fra.com

La colonne d'administration personnalisée disparaît lors de l'utilisation de Quick Edit

J'ai ajouté une colonne d'images en vedette à mes messages dans WP admin. Tout cela fonctionne bien, sauf lorsque vous utilisez la fonction Édition rapide. Lors de la mise à jour, la colonne disparaît ou n'est plus renvoyée par la fonction de sauvegarde ajax. L'en-tête de colonne reste, mais la ligne mise à jour n'a plus de cellule d'image sélectionnée, ce qui donne une cellule "vide" à la fin de la ligne (toutes les cellules par défaut sont décalées à gauche).

Je ne sais pas où chercher pour résoudre ce problème et je n'ai pas eu la chance de trouver une réponse.

Merci pour toute aide.

EDIT: Voici le code pour ajouter la colonne personnalisée. Le filtre et l'action sont appelés dans la __construct du plugin

    // 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

J'utilise Boilerplate du plugin de Tom McFarlin pour les plugins que j'écris et dans le fichier du plugin principal, il y a une instruction conditionnelle pour garder les choses aussi claires que possible dans l'admin:

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

Étant donné que la fonctionnalité Édition rapide utilise AJAX, la colonne n’a pas été recréée lors d’une sauvegarde Édition rapide. Changer la ligne ci-dessus en:

if ( is_admin() ) {
  ...
}

le problème a été résolu et la colonne personnalisée apparaît lors de l’enregistrement via Édition rapide.

J'espère que cela aidera quelqu'un qui pourrait rencontrer le même type de problème.

Merci.

1
edeneye