[Résolu] Sportspress cyclisme (Créer un compte)

  • WordPress :5.2
  • Statut : résolu
15 sujets de 1 à 15 (sur un total de 21)
  • Auteur
    Messages
  • #2289328
    OlivierT77
    Participant
    Initié WordPress
    18 contributions

    Bonjour,

    Ma configuration WP actuelle 5.3

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

    j’essaie d’utiliser Sportspress pour un club cycliste.
    Aussi, je souhaite afficher la liste des évènements auxquels un joueur a participé avec son résultat.
    J’ai réussi a créer cette liste, mais le résultat affiché comporte l’ensemble des résultats de l’évènement et non juste celui du joueur.
    Sur la page du joueur ( http://www.lagnypontcarrecyclisme.com/player/thiesson-alexis/ ), le tableau concerné est le dernier en bas.
    A noter que dans le tableau juste au-dessus ‘Résultats’ montre bien le résultat par coureur d’un seul évènement.
    J’essaie de modifier les templates PHP, mais je ne connais rien à ce langage.
    Merci pour votre aide.

    #2289430
    mathieu42
    Participant
    Maître WordPress
    1989 contributions

    la 1re étape est de créer un thème enfant. sinon, à la prochaine mise à jour du thème, vos modifications seront écrasées :
    https://codex.wordpress.org/fr:Th%C3%A8mes_Enfant

    ensuite dans le fichier « functions.php » du thème enfant, mettez ce code :

    add_filter("sportspress_event_list_main_results", function ($_, $event_ID) {

    $sportif = get_queried_object();
    $results = get_post_meta( $event_ID, 'sp_results', true );


    $resultats = [];

    if (isset($results[$sportif->ID]["res"])) {
    $resultats[] = $results[$sportif->ID]["res"];
    }


    return $resultats;

    }, 10, 2);

    #2289434
    ferman
    Participant
    Maître WordPress
    6318 contributions

    @mathieu42

    Bonjour,

    Si je ne me trompe, le code est un peu mélangé à la première ligne non?. Mauvais copier/coller?

    • Cette réponse a été modifiée le il y a 3 années et 9 mois par ferman.
    #2289438
    mathieu42
    Participant
    Maître WordPress
    1989 contributions

    non ça a l’air bon, il s’agit d’une fonction anonyme

    https://www.php.net/manual/fr/functions.anonymous.php

    #2289471
    OlivierT77
    Participant
    Initié WordPress
    18 contributions

    Bonjour,

    merci pour vos réponses. Le thème enfant est déjà créé. Par contre, j’ai ajouté votre code dans le fichier functions.php Depuis les résultats n’apparaissent plus.

    Pour info, si cela peut vous aider voici le code de la page :

    <?php
    /**
    * Event Player
    *
    * @author LPC
    * @package SportsPress/Templates
    * @version 2.6.19
    */

    if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

    $defaults = array(
    'id' => null,
    'title' => false,
    'status' => 'default',
    'format' => 'all',
    'date' => 'default',
    'player' => null,
    'number' => -1,
    'link_events' => get_option( 'sportspress_link_events', 'yes' ) == 'yes' ? true : false,
    'responsive' => get_option( 'sportspress_enable_responsive_tables', 'no' ) == 'yes' ? true : false,
    'sortable' => get_option( 'sportspress_enable_sortable_tables', 'yes' ) == 'yes' ? true : false,
    'scrollable' => get_option( 'sportspress_enable_scrollable_tables', 'yes' ) == 'yes' ? true : false,
    'paginated' => get_option( 'sportspress_event_list_paginated', 'yes' ) == 'yes' ? true : false,
    'rows' => get_option( 'sportspress_event_list_rows', 10 ),
    'order' => 'DESC',
    'columns' => null,
    'show_all_events_link' => false,
    'show_title' => get_option( 'sportspress_event_list_show_title', 'yes' ) == 'yes' ? true : false,
    'title_format' => get_option( 'sportspress_event_list_title_format', 'title' ),
    'time_format' => get_option( 'sportspress_event_list_time_format', 'combined' ),
    );

    extract( $defaults, EXTR_SKIP );

    $calendar = new SP_Calendar( $id );
    if ( $status != 'default' )
    $calendar->status = $status;
    if ( $format != 'default' )
    $calendar->event_format = $format;
    if ( $date != 'default' )
    $calendar->date = $date;
    if ( $player )
    $calendar->player = $player;
    if ( $order != 'default' )
    $calendar->order = $order;
    $data = $calendar->data();
    $usecolumns = $calendar->columns;

    $labels = array();
    //Create a unique identifier based on the current time in microseconds
    $identifier = uniqid( 'eventlist_' );
    ?>
    <div class="sp-template sp-template-event-list">
    <?php if ( $title ) { ?>
    <h4 class="sp-table-caption"><?php echo $title; ?></h4>
    <?php } ?>
    <div class="sp-table-wrapper">
    <table class="sp-event-list sp-event-list-format-<?php echo $title_format; ?> sp-data-table<?php if ( $paginated ) { ?> sp-paginated-table<?php } if ( $sortable ) { ?> sp-sortable-table<?php } if ( $responsive ) { echo ' sp-responsive-table '.$identifier; } if ( $scrollable ) { ?> sp-scrollable-table <?php } ?>" data-sp-rows="<?php echo $rows; ?>">
    <thead>
    <tr>
    <?php
    echo '<th class="data-date">' . __( 'Date', 'sportspress' ) . '</th>';

    switch ( $title_format ) {

    default:
    if ( sp_column_active( $usecolumns, 'event' ) ) {
    if ( $title_format == 'teams' ){
    echo '<th class="data-teams">' . __( 'Teams', 'sportspress' ) . '</th>';
    } else {
    echo '<th class="data-event">' . __( 'Event', 'sportspress' ) . '</th>';
    }
    }

    switch ( $time_format ) {

    case 'results':
    if ( sp_column_active( $usecolumns, 'classement' ) )
    echo '<th class="data-classement">' . __( 'Results', 'sportspress' ) . '</th>';
    break;

    }
    }




    do_action( 'sportspress_event_list_head_row', $usecolumns );
    ?>
    </tr>
    </thead>
    <tbody>
    <?php
    $i = 0;

    if ( is_numeric( $number ) && $number > 0 )
    $limit = $number;

    foreach ( $data as $event ):
    if ( isset( $limit ) && $i >= $limit ) continue;

    $teams = get_post_meta( $event->ID, 'sp_team' );


    $main_results = apply_filters( 'sportspress_event_list_main_results', sp_get_main_results( $event ), $event->ID );

    $teams_output = '';
    $team_class = '';
    $teams_array = array();
    $team_logos = array();



    echo '<tr class="sp-row sp-post' . ( $i % 2 == 0 ? ' alternate' : '' ) . ' sp-row-no-' . $i . '" itemscope itemtype="http://schema.org/SportsEvent">';

    $date_html = '<date>' . get_post_time( 'Y-m-d H:i:s', false, $event ) . '</date>' . apply_filters( 'sportspress_event_date', get_post_time( get_option( 'date_format' ), false, $event, true ), $event->ID );

    if ( $link_events ) $date_html = '<a href="' . get_post_permalink( $event->ID, false, true ) . '" itemprop="url">' . $date_html . '</a>';

    echo '<td class="data-date" itemprop="startDate" content="' . mysql2date( 'Y-m-d\TH:iP', $event->post_date ) . '" data-label="'.__( 'Date', 'sportspress' ).'">' . $date_html . '</td>';

    switch ( $title_format ) {

    default:
    if ( sp_column_active( $usecolumns, 'event' ) ) {
    if ( $title_format == 'teams' ) {
    echo '<td class="data-event data-teams" data-label="'.__( 'Teams', 'sportspress' ).'">' . $teams_output . '</td>';
    } else {
    $title_html = implode( ' ', $team_logos ) . ' ' . $event->post_title;
    if ( $link_events ) $title_html = '<a href="' . get_post_permalink( $event->ID, false, true ) . '" itemprop="url name">' . $title_html . '</a>';
    echo '<td class="data-event" data-label="'.__( 'Event', 'sportspress' ).'">' . $title_html . '</td>';
    }
    }

    switch ( $time_format ) {

    case 'results':
    if ( sp_column_active( $usecolumns, 'results' ) ) {
    echo '<td class="data-classement" data-label="'.__( 'Results', 'sportspress' ).'">';
    if ( $link_events ) echo '<a href="' . get_post_permalink( $event->ID, false, true ) . '" itemprop="url">';
    if ( ! empty( $main_results ) ):
    echo implode( ' - ', $main_results );
    else:
    echo '-';
    endif;
    if ( $link_events ) echo '</a>';
    echo '</td>';
    }
    break;

    }
    }





    do_action( 'sportspress_event_list_row', $event, $usecolumns );

    echo '</tr>';

    $i++;
    endforeach;
    ?>
    </tbody>
    </table>
    </div>
    <?php
    // If responsive tables are enabled then load the inline css code
    if ( $responsive ){
    //sportspress_responsive_tables_css( $identifier );
    }
    if ( $id && $show_all_events_link ) {
    echo '<div class="sp-calendar-link sp-view-all-link"><a href="' . get_permalink( $id ) . '">' . __( 'View all events', 'sportspress' ) . '</a></div>';
    }
    ?>
    </div>

    #2289472
    ferman
    Participant
    Maître WordPress
    6318 contributions

    @mathieu42

    D’accord; je me demandais simplement (une erreur est vite commise). Je n’ai absolument aucune connaissance des fonctions anonymes d’où ma remarque.

    #2289479
    mathieu42
    Participant
    Maître WordPress
    1989 contributions

    je n’ai peut-être pas configuré les évènements sur mon site de test de la même façon que vous.

    vous pouvez me montrer un exemple d’un évènement ?

    #2289700
    OlivierT77
    Participant
    Initié WordPress
    18 contributions

    Bonjour, merci pour votre réponse. Voici la page de mes évènements ou l’on voit chaque joueur avec son propre score.

     

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2289737
    mathieu42
    Participant
    Maître WordPress
    1989 contributions

    pour le moment mon test ressemble aussi à ça.

    et ensuite dans l’édition d’un évènement, dans « mode » vous choisissez « joueur contre joueur » ? et vous choisissez les participants un peu plus bas dans « équipes » ?

    #2289771
    OlivierT77
    Participant
    Initié WordPress
    18 contributions

    Oui c’est tout à fait ça.

    Par contre, concernant la configuration de Sportspress je ne sais pas ce qu’il faut mettre. J’ai essayé divers paramètres sans succès.

    #2289772
    OlivierT77
    Participant
    Initié WordPress
    18 contributions

    Aussi, dans le code que vous m’avez communiqué il y a la balise $sportif, est ce la même chose que « player »?

    #2289806
    mathieu42
    Participant
    Maître WordPress
    1989 contributions

    c’est bizarre que vous n’ayez pas le même résultat que dans mon test.

    pouvez vous rajouter « var_dump($results); » dans mon code pour me montrer ce que vous récupérez ?

    #2289970
    OlivierT77
    Participant
    Initié WordPress
    18 contributions

    J’ai ajouté la ligne à la fin de votre code dans le fichier functions, mais les résultats ne s’affichent toujours pas.

    Dans le menu Configurer de Sportspress, y a-t-il des éléments à ajouter ?

    Dans votre exemple qui fonctionne, qu’affichez-vous exactement ? et comment ? (shortcode…)

     

    #2289971
    OlivierT77
    Participant
    Initié WordPress
    18 contributions

    Je viens de remarquer que le code me disloque ma page d’accueil du site, donc je l’ai enlevé.

    #2289973
    mathieu42
    Participant
    Maître WordPress
    1989 contributions
    Cette réponse a été marquée comme privée.
15 sujets de 1 à 15 (sur un total de 21)
  • Vous devez être connecté pour répondre à ce sujet.