Tri par colonne Custom post type

  • Statut : non résolu
7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #547779
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.1.1
    – Version de PHP/MySQL :
    – Thème utilisé : le mien
    – Extensions en place : aucune
    – Nom de l’hebergeur : STRATO
    – Adresse du site :

    Problème(s) rencontré(s) :

    Bonjour,

    J’ai un affichage de mes Custom Post Type “evenements” dans le tableau de bord wordpress avec des colonnes supplémentaires que j’ai ajouté et un tri sur une de ces colonnes.
    La colonne en question est la date de l’évènement (date obtenue par Datepicker).

    Mais le tri sur cette colonne ne se fait pas bien.

    Voici mon code (1er essai) :

    add_filter(“manage_edit-evenements_sortable_columns”, “evenements_date_column_register_sortable”);
    function evenements_date_column_register_sortable( $columns ) {
            $columns[‘date_evenement’] = ‘date_evenement’;
    	    return $columns;
    }
    
    add_filter(“request”, “evenements_date_column_orderby” ); // FONCTIONNE AUSSI ….. A REVOIR 
    function evenements_date_column_orderby( $vars ) {
        if ( isset( $vars[‘orderby’] ) && ‘date_evenement’ == $vars[‘orderby’] ) {
            $vars = array_merge( $vars, array(
                ‘meta_key’ => ‘date_evenement’,
                ‘orderby’  => ‘meta_value_num’
            ) );
        }
        return $vars;
    }

    et le résultat du tri de ce code :
    2012/10/27
    2012/11/23
    2012/02/09
    2012/03/08
    2012/04/19
    2012/05/24
    2012/07/08
    2012/09/15
    2012/09/20

    et le deuxième essaie

    add_action( ‘pre_get_posts’, ‘evenements_date_column_orderby’ );  
    function evenements_date_column_orderby( $query ) {  
        if( ! is_admin() )  
            return;  
    
        $orderby = $query->get( ‘orderby’);  
    
        if( ‘date_evenement’ == $orderby ) {  
            $query->set(‘meta_key’,’date_evenement’);  
            $query->set(‘orderby’,’meta_value_num’);  
        }  
    		return $query;
    }

    qui donne le même résultat.

    J’ai essayé de mettre la forme 2012/2/9 pour les date (yy/m/d) mais cela ne change rien…

    Avez-vous une idée du problème ?

    merci pour votre aide

    Timama

    #997197
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    tu enregistres la date sous quel format ?
    pour que le tri fonctionne, enregistre le au format timestamp

    #997198
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Merci pour ta réponse mathieu9512.

    Je ne te cache pas que je me pose la question du format depuis le début où j’utilise Datepicker.
    Et je ne sais pas où est le format (interne dans datepicker ?)

    J’ai cela

    // Date de l’évènement
    	$custom_date = get_post_custom($post->ID); 
    	$date_evenement = $custom_date[“date_evenement”][0];
    	?>
        <label for="date_evenement"> Date de l’évènement : </label>
        <input type="text" name="date_evenement" id="date_evenement" value="” />

    Avec le save suivant :

    if(isset($_POST[‘date_evenement’])){
    			update_post_meta($post->ID, “date_evenement”, $_POST[“date_evenement”]); 
    		  }

    Mais là il n’y a pas de format…. ou seulement là (javascript qui va avec datpicker)

    jQuery(function($) {
    	$( “#date_evenement” ).datepicker({ dateFormat: ‘yy/mm/dd’ });
    });

    Dans ce cas précis, où pourais-je mettre le format timestamp ?
    là j’avoue, je suis nulle en format 😉

    #997199
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    et pourtant, c’est bizarre car je fais aussi un tri pour l’affichage des événements sur une page, tri par rapport à la date, et là cela m’affiche bien les évènements dans l’ordre… il n’y a que pour le tri “colonne” dans le tableau de bord de wordpress que cela tri bizarrement….

    Pourquoi y aurait il une différence entre les 2 ?

    #997200
    mathieu789
    Participant
    Maître WordPress
    1084 contributions

    essaye ça dans le code JavaScript

    dateFormat: ‘@’

    #997202
    Lumiere de Lune
    Participant
    Maître WordPress
    19385 contributions

    Dans le cas de dates formattées sous la forme yyyy/mm/aa il ne faut pas faire un tri numérique, mais un tri alphabétique, ça marche très bien. Un tri numérique sur une chaine comprenant des caractères autres ne fonctionnera pas

    #997201
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    merci beaucoup mathieu9512, j’ai pas eu le temps de tester ta réponse car je “débuggais” quelque chose.

    Et puis Lumière de Lune a répondu. Et effectivement ça fonctionne très bien avec le tri alphabétique !
    Et en fait, oui, c’est logique.
    Donc merci beaucoup aussi à Lumière de Lune, qui a encore résolu un de mes problèmes 😉

7 sujets de 1 à 7 (sur un total de 7)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.