- WordPress :5.2
- Statut : résolu
- Ce sujet contient 20 réponses, 4 participants et a été mis à jour pour la dernière fois par
OlivierT77, le il y a 3 années et 9 mois.
-
AuteurMessages
-
14 décembre 2019 à 15 h 41 min #2289328
Bonjour,
Ma configuration WP actuelle 5.3
- Version de PHP/MySQL :
- Thème utilisé : newsphere
- Extensions en place : Sportspress
- Nom de l’hébergeur : ovh
- Adresse du site : http://www.lagnypontcarrecyclisme.com
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.15 décembre 2019 à 10 h 43 min #2289430la 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_Enfantensuite 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);15 décembre 2019 à 11 h 00 min #2289434Bonjour,
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.
15 décembre 2019 à 12 h 58 min #2289438non ça a l’air bon, il s’agit d’une fonction anonyme
15 décembre 2019 à 15 h 07 min #2289471Bonjour,
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>15 décembre 2019 à 15 h 25 min #2289472D’accord; je me demandais simplement (une erreur est vite commise). Je n’ai absolument aucune connaissance des fonctions anonymes d’où ma remarque.
15 décembre 2019 à 17 h 06 min #2289479je 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 ?
17 décembre 2019 à 22 h 15 min #2289700Bonjour, 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.18 décembre 2019 à 10 h 36 min #2289737pour 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 » ?
18 décembre 2019 à 13 h 56 min #2289771Oui 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.
18 décembre 2019 à 13 h 58 min #2289772Aussi, dans le code que vous m’avez communiqué il y a la balise $sportif, est ce la même chose que « player »?
18 décembre 2019 à 21 h 47 min #2289806c’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 ?
20 décembre 2019 à 11 h 28 min #2289970J’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…)
20 décembre 2019 à 11 h 31 min #2289971Je viens de remarquer que le code me disloque ma page d’accueil du site, donc je l’ai enlevé.
20 décembre 2019 à 11 h 46 min #2289973Cette réponse a été marquée comme privée. -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.