- WordPress :5.8
- Statut : résolu
- Ce sujet contient 7 réponses, 3 participants et a été mis à jour pour la dernière fois par lahrim, le il y a 1 année et 10 mois.
-
AuteurMessages
-
15 octobre 2022 à 1 h 09 min #2424930
Bonjour,
J’ai une question php, pas trouvé de réponses malheureusement.
Voici un exemple :
function code1($id, $title){
global $help;
$help = ['id' => $id, 'title' => $title];
echo '<div style="width:400px; margin:auto"><pre>';
print_r($help);
echo '</pre></div>';
}
code1('mon id 1', 'mon title 1');
code1('mon id 2', 'mon title 2');
code1('mon id 3', 'mon title 3');
function code2(){
global $help;
extract($help);
echo '<div style="width:400px; margin:auto"><pre>';
print_r($help);
echo '</pre></div>';
}le print_r($help) de la function code1 affiche :
Array
(
[id] => mon id 1
[title] => mon title 1
)
Array
(
[id] => mon id 2
[title] => mon title 2
)
Array
(
[id] => mon id 3
[title] => mon title 3
)Or le print_r($help) de la function code2 affiche uniquement le dernier :
Array
(
[id] => mon id 3
[title] => mon title 3
)Est-il possible d’avoir comme dans la première function les informations ?
Merci de la réponse (si cela est possible) 🙂
- Ce sujet a été modifié le il y a 1 année et 10 mois par lahrim.
15 octobre 2022 à 3 h 16 min #2424940C’est l’ordre de déclaration de tes variables, qui sont écrasées à chaque ligne…
$help = array(
1 => array (
'id' => 'blabla',
'title' => 'blabla'),
2 => array (
'id' => 'blabla',
'title' => 'blabla'),
3 => array (
'id' => 'blabla',
'title' => 'blabla')
);
function code1 ( ) {
global $help ;
/* reste de la fonction */
}
function code2 ( ) {
global $help ;
/* reste de la fonction */
}marcherait beaucoup mieux.
Tu peux aussi faire encore plus simple pour $help :
$help = array(
'id1' => 'title1',
'id2' => 'title2',
'id3' => 'title3'
);15 octobre 2022 à 17 h 25 min #2425045Merci @Lumiere-de-lune,
malheureusement cela ne fonctionne pas, le mieux le contenu du plugin que je souhaite réaliser :
il y a le ficher show-php.php qui contient :
add_filter('update_footer', function(){
return 'Version wordpress ' . get_bloginfo('version') . ' | Version php ' . phpversion();
}, 9999);
helpers('showPhp', 'Version php');
function showPhp_help_inutile(){
echo '<div class="wrapHelpInutile">';
echo '<h2>Version php</h2>';
echo '<div class="wrapContent">';
echo '<p>Afficher la version php utilisé</p>';
echo '<p>En bas de page dans l\'admin à coté de la version wordpress</p>';
echo '</div>';
echo '</div>';
}un fichier disable-brp.php qui contient :
remove_filter('the_content', 'wpautop');
remove_filter('the_excerpt', 'wpautop');
helpers('disableBrP', 'Balises p et br');
function disableBRP_help_inutile(){
echo '<div class="wrapHelpInutile">';
echo '<h2>Désactiver l\'ajout automatique des balises p et br</h2>';
echo '<div class="wrapContent">';
echo '<p>L’editeur HTML de WordPress est paramétré par défaut d\'ajouter les balises p et br en mode affichage du code HTML.</p>';
echo '<p>Cela peut poser des problèmes, par exemple si on veut faire des retouches manuelles du code, faire des copier-coller de code HTML ou si on préfère avoir quelque part un saut de paragraphe plutôt qu’un simple retour à la ligne.</p>';
echo '<p>Il est possible d’y remédier en activent l\'option</p>';
echo '</div>';
echo '<div class="infos">';
echo '<h3>Info utile</h3>';
echo '<p>Si vous utilisé le plugin TinyMCE, il n\'est pas utile d\'activer l\'option</p>';
echo '</div>';
echo '</div>';
}il y à encore environ 10 fichiers avec des options d’ergonomie de wordpress
Puis un fichier helpers.php qui affiche l’onglet aide en haut de l’onglet, qui contient :
function helpers($id, $title){
global $helpers;
$helpers = ['id' => $id, 'title' => $title];
echo '<div style="width:400px; margin:auto"><pre>';
// print_r($helpers);
echo '</pre></div>';
}
add_filter('contextual_help', function($help, $screen_id, $screen){
global $helpOption, $namePlugin, $helpers;
extract($helpers);
echo '<div style="width:400px; margin:auto"><pre>';
print_r($helpers);
echo '</pre></div>';
if($screen_id == $helpOption):
$callback = $id . '_help_' . $namePlugin;
$screen->add_help_tab(array('id' => $id, 'title' => $title, 'callback' => $callback));
endif;
}, 10, 3);Puis le fichier index.php qui inclus les fichiers :
include_once('admin/helpers.php');
include_once('admin/settings.php'); // les fichiers d'options comme show-php.php en include_onceL’objectif est quand le fichier helpers.php la ligne ;
$screen->add_help_tab(array('id' => $id, 'title' => $title, 'callback' => $callback));
ce multiplie par le nombre de fois qu’il y aura de
helpers('id', 'title');
Cela est-il possible ou maladroit de ma part ?!
15 octobre 2022 à 18 h 16 min #2425050Donc faites une $helpers une array et un petit foreach
15 octobre 2022 à 18 h 40 min #2425055La un peu dans le brouillard :/
15 octobre 2022 à 20 h 26 min #2425071avez-vous activé WP_DEBUG ? quand c’est activé, on voit un message d’erreur disant que l’utilisation de l’action « contextual_help » est obsolète.
à la place vous devez utiliser un crochet lancé dans la page où vous voulez rajouter les panneaux d’aide et vous faites par exemple cela :
add_action("......", function () {
$panneaux = apply_filters("MonExtension/ajout_panneau_aide", []);
foreach ($panneaux as $identifiant => $panneau) {
get_current_screen()->add_help_tab([
"id" => $identifiant,
"title" => $panneau["titre"],
"callback" => function () use ($panneau) {
?>
<div style="width : 400px; margin : auto;">
<pre>
<?php $panneau["contenu"]();?>
</pre>
</div>
<?php
},
]);
}
});et ensuite dans chaque fichier, vous définissez le contenu des panneaux comme cela :
add_filter("MonExtension/ajout_panneau_aide", function ($liste_panneaux) {
$liste_panneaux["MonExtension__id_onglet_aide_balises_p_br"] = [
"titre" => "Balises p et br",
"contenu" => function () {
echo '<div class="wrapHelpInutile">';
echo '<h2>Désactiver l\'ajout automatique des balises p et br</h2>';
echo '<div class="wrapContent">';
echo '<p>L’editeur HTML de WordPress est paramétré par défaut d\'ajouter les balises p et br en mode affichage du code HTML.</p>';
echo '<p>Cela peut poser des problèmes, par exemple si on veut faire des retouches manuelles du code, faire des copier-coller de code HTML ou si on préfère avoir quelque part un saut de paragraphe plutôt qu’un simple retour à la ligne.</p>';
echo '<p>Il est possible d’y remédier en activent l\'option</p>';
echo '</div>';
echo '<div class="infos">';
echo '<h3>Info utile</h3>';
echo '<p>Si vous utilisé le plugin TinyMCE, il n\'est pas utile d\'activer l\'option</p>';
echo '</div>';
echo '</div>';
},
];
return $liste_panneaux;
});15 octobre 2022 à 22 h 47 min #2425086Merci @Mathieu42 pas du tout pensé au wp_debug (il y a même d’autres erreurs visibles grâce au wp_debug).
16 octobre 2022 à 0 h 09 min #2425096Cela fonctionne 🙂
J’ai aussi simplement mis dans chaque fichier qui a besoin d’ajouter du texte dans l’onglet aide le code suivant :
function showPhp_help_inutile(){
echo '<div class="wrapHelpInutile">';
echo '<h2>Version php</h2>';
echo '<div class="wrapContent">';
echo '<p>Afficher la version php utilisé</p>';
echo '<p>En bas de page dans l\'admin à coté de la version wordpress</p>';
echo '</div>';
echo '</div>';
}
add_action('admin_head', function(){
get_current_screen()->add_help_tab([
'id' => 'showPhp',
'title' => 'Version php',
'callback' => 'showPhp_help_inutile'
]);
});Merci pour l’aides apporté 🙂
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.