Tri colonne dans le back office wordpress user (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 24)
  • Auteur
    Messages
  • #554236
    Timama
    Participant
    WordPress Knight
    284 contributions

    Bonjour,

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

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

    Bonjour,

    Dans le back office, chez les « utilisateurs », j’ai différentes colonnes :
    – Identifiant
    – Nom
    – Rôle
    – Raisonsociale
    – Admission

    Sur la colonne « Identifiant », le tri se fait par défaut. Disons que c’est comme ça dès le départ.
    J’aimerai que le tri soit également possible sur les colonnes « Nom » et « Raison sociale ».

    Pour Raison sociale (colonne que j’ai ajoutée), j’ai fait ça :

    add_filter(‘manage_users_columns’, ‘pippin_add_user_raisonsociale’);
    function pippin_add_user_raisonsociale($columns) {
    $columns[‘raisonsociale’] = ‘Raisonsociale’;
    return $columns;
    }


    add_action(‘manage_users_custom_column’, ‘pippin_show_user_raisonsociale’, 10, 3);
    function pippin_show_user_raisonsociale($value, $column_name, $user_id) {
    $user = get_userdata( $user_id );
    $raisonsociale = $user->raisonsociale;
    if ( ‘raisonsociale’ == $column_name )
    return $raisonsociale;
    return $value;
    }


    //nouvelle colonne triée
    add_filter( ‘manage_users_sortable_columns’, ‘user_sortable_columns’ );
    function user_sortable_columns( $columns ) {
    $columns[‘raisonsociale’] = ‘Raisonsociale’;
    return $columns;
    }

    add_filter( ‘request’, ‘bs_raisonsociale_column_orderby’ );
    function bs_raisonsociale_column_orderby( $vars ) {
    if ( isset( $vars[‘orderby’] ) && ‘Raisonsociale’ == $vars[‘orderby’] ) {
    $vars = array_merge( $vars, array(
    ‘meta_key’ => ‘raisonsociale’,
    ‘orderby’ => ‘meta_value’
    ) );
    }

    return $vars;
    }

    La colonne apparaît, les données dedans sont bonnes mais quand je clique sur la petite flèche de tri, et bien le tri ne se fait pas. Et en fait, cela se tri toujours en fonction de « identifiant »

    Donc que cela soit la colonne NOM ou RAISON SOCIALE, quand je clique sur les flèches de tri, cela tri en fonction de « identifiant » et pas du non ou de la raison sociale….

    Avez vous des conseil à me donner ?
    Avez vous déjà rencontrer ce problème ?

    merci pour votre aide

    #1021326
    Gueblo
    Participant
    WordPress Master
    1058 contributions

    faudrait voir les fonctions qui trient les autres colonnes

    #1021327
    Timama
    Participant
    WordPress Knight
    284 contributions

    Merci Gueblo pour ta remarque, je me sentais seule LOL

    Alors, pour la colonne identifiant (comme pour a colonne nom d’ailleurs), c’est une colonne déjà placée dans le back office, donc ce n’est pas moi qui ai programmé le tri.

    Moi j’ai ajouté les colonnes
    – Rôle
    – Raisonsociale
    – Admission

    au back office….. et je fais le tri sur « admission » …

    Et justement, e je me demande si il y a pas une « interférence » entre le tri qui est par défaut avec les colonnes déjà existante dans le back office et le tri que moi j’essai de faire….

    D’ailleurs, je ne sais pas où se trouve le tri de la colonne identifiant tient…..

    je vais regarder…….

    :search:

    #1021328
    Gueblo
    Participant
    WordPress Master
    1058 contributions

    Tu ne voudrais pas remplacer « Raisonsociale » par « raisonsociale », dans la dernière fonction, ici :

    if ( isset( $vars[‘orderby’] ) && ‘Raisonsociale’ == $vars[‘orderby’] ) {

    #1021329
    Gueblo
    Participant
    WordPress Master
    1058 contributions

    et sinon tu peux utiliser ce plugin :

    Admin Columns

    #1021330
    Timama
    Participant
    WordPress Knight
    284 contributions

    ah oui ! ça aurait pu être une erreur comme ça effectivement LOL

    J’ai remplacé « Raisonsociale » par « raisonsociale », mais le tri se fait toujours en fonction de l’identifiant quand je clique sur le petite flèche de tri de raisonsociale….. bizarre ….

    Sinon, je préfère ne pas utiliser de plugin 😉

    :search: encore

    #1021331
    Timama
    Participant
    WordPress Knight
    284 contributions

    merci Gueblo

    #1021332
    Gueblo
    Participant
    WordPress Master
    1058 contributions

    de rien 🙂
    tiens moi au courant de tes avancées

    #1021333
    Timama
    Participant
    WordPress Knight
    284 contributions

    mouais bon, le tri de la colonne identifiant se fait dans
    – class-wp-users-list-table.php
    – class-wp-list-table.php

    bon, en même temps je comprends pas trop leur méthode et puis c’est dans des fichiers sources donc je vais pas y toucher sinon, à chaque mise à jour, faut remodifier.

    donc, bon, je cherche encore
    :search:

    #1021334
    Timama
    Participant
    WordPress Knight
    284 contributions

    alors, je me suis dit : okay, je reprends les colonnes et je fais le tri des colonnes que je veux dans function, même le tri d’un colonne qui existe par defaut (son tri aussi).

    donc j’ai écrit :

    add_filter(‘manage_users_columns’, ‘pippin_add_user_raisonsociale’);
    function pippin_add_user_raisonsociale($columns) {
    $columns[‘username’] = ‘Identifiant’;
    $columns[‘raisonsociale’] = ‘Raisonsociale’;
    $columns[‘name’] = ‘Nom’;
    $columns[‘particulier_admission’] = ‘Admission’;
    return $columns;
    }


    add_action(‘manage_users_custom_column’, ‘pippin_show_user_raisonsociale’, 10, 3);
    function pippin_show_user_raisonsociale($value, $column_name, $user_id) {
    $user = get_userdata( $user_id );
    $user_roles = $user->roles;
    $user_role = array_shift($user_roles);
    $username = $user->username;
    $raisonsociale = $user->raisonsociale;
    $name = $user->name;
    if ( ‘username’ == $column_name )
    {
    return $username;
    }
    if ( ‘raisonsociale’ == $column_name )
    {
    return $raisonsociale;
    }
    if ( ‘name’ == $column_name )
    {
    return $name;
    }
    if ($user_role == ‘membres_particulier’ )
    {
    $admission = $user->particulier_admission;
    }

    if ($user_role == ‘membres_entreprise’ )
    {
    $admission = $user->admissionent;
    }

    if ( ‘particulier_admission’ == $column_name OR ‘admissionent’ == $column_name)
    {
    return $admission;
    }
    return $value;

    }


    //nouvelle colonne triée
    add_filter( ‘manage_users_sortable_columns’, ‘user_sortable_columns’ );
    function user_sortable_columns( $columns ) {
    $columns[‘username’] = ‘Identifiant’;
    $columns[‘raisonsociale’] = ‘Raisonsociale’;
    $columns[‘name’] = ‘Nom’;
    return $columns;
    }

    add_filter( ‘request’, ‘bs_username_column_orderby’ );
    function bs_username_column_orderby( $vars ) {
    if ( isset( $vars[‘orderby’] ) && ‘username’ == $vars[‘orderby’] ) {
    $vars = array_merge( $vars, array(
    ‘meta_key’ => ‘username’,
    ‘orderby’ => ‘meta_value’,
    ‘order’ => ‘asc’
    ) );
    }

    return $vars;
    }

    add_filter( ‘request’, ‘bs_raisonsociale_column_orderby’ );
    function bs_raisonsociale_column_orderby( $vars ) {
    if ( isset( $vars[‘orderby’] ) && ‘raisonsociale’ == $vars[‘orderby’] ) {
    $vars = array_merge( $vars, array(
    ‘meta_key’ => ‘raisonsociale’,
    ‘orderby’ => ‘meta_value’,
    ‘order’ => ‘asc’
    ) );
    }

    return $vars;
    }


    add_filter( ‘request’, ‘bs_name_column_orderby’ );
    function bs_name_column_orderby( $vars ) {
    if ( isset( $vars[‘orderby’] ) && ‘name’ == $vars[‘orderby’] ) {
    $vars = array_merge( $vars, array(
    ‘meta_key’ => ‘name’,
    ‘orderby’ => ‘meta_value’,
    ‘order’ => ‘asc’
    ) );
    }

    return $vars;
    }

    mais cela ne change rien ! pour chaque colonne où l’on peut trier, si on clique sur la flèche, c’est toujours en fonction de l’identifiant que ça se tri ….

    je ne sais pas

    :search:

    #1021335
    Gueblo
    Participant
    WordPress Master
    1058 contributions

    c’est un thème de Pippin Williamson apparemment, donc déjà on sait que c’est bien conçu 🙂
    c’est quel thème ?

    Tu peux me l’envoyer par zip si tu veux et je fais des tests de mon côté

    #1021336
    Timama
    Participant
    WordPress Knight
    284 contributions

    non, c’est mon thème 😉

    je connaissais pas Pippin Williamson LOL

    #1021337
    Timama
    Participant
    WordPress Knight
    284 contributions

    après, j’ai surement repris un truc de lui ….. pour le tri que j’essai de faire fonctionner désespérément…. je farfouille dans les forum et blog….

    Bref, peut être que le problème vient du fait que la raison sociale peut ne pas avoir de valeur?
    et qu’il faut mettre une valeur par defaut quand c’est vide…..

    bon, je continue

    mais j’avais trouvé ça où la personne parle bien du tri qui se fait au niveau de l’identifiant et pas dans sa colonne….
    http://wpquestions.com/question/showChrono/id/8170

    mais bon, j’ai testé des trucs de ce forum mais toujours pas trouvé

    :search:

    #1021338
    Gueblo
    Participant
    WordPress Master
    1058 contributions

    ah ok, mais tu utilises une fonction de Pippin pourtant…
    bref… je pensais que les classes dont tu parlais étaient dans un theme mais en fait ce sont celles propres à WP
    je te déconseille de les modifier 🙂

    donc reprenons… la colonne « Raisonsociale » s’affiche
    elle est bien remplie avec le contenu du champ de chaque user ?

    #1021339
    Timama
    Participant
    WordPress Knight
    284 contributions

    ah oui bien sûr ! je ne touche pas à ce qui est wp… moi, je met dans function.php (pour la creation de custom colonnes qui peuvent être triées…)

    sinon, OUI : dans la colonne « Raisonsociale » , tout est bien rempli pour chaque user

    Je me demande toujours si c’est pas parce que parfois c’est vide… ou alors qu’il faut utiliser query_posts pour les users……

    hummmm

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