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');
}
}
}
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.