- WordPress :6.2
- Statut : non résolu
- Ce sujet contient 4 réponses, 2 participants et a été mis à jour pour la dernière fois par FrancoisR, le il y a 1 année et 6 mois.
-
AuteurMessages
-
19 juillet 2023 à 14 h 25 min #2457997
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL : 7.4.x
- Thème utilisé : Thème custom
- Extensions en place : Extension custom
- Nom de l’hébergeur : Gandi
- Adresse du site : https://www.tourdumondiste.com
J’essai de créer un plugin custom qui permet de charger un js et une feuille de style seulement dans le cas où se trouve dans mon post un élément html ayant la classe .test. Mon thème est codé de telle façon que les rédacteurs du site ont à leur disposition de nombreux champs wysiwyg dans la page d’édition de l’article. C’est dans l’un ou l’autre de ces champs acf wysiwyg qu’ils vont éventuellement ajouter un élément ayant la classe test.
J’ai déjà essayé plein de choses qui ne fonctionnent pas comme ceci en dernier lieu :
<?php
/*
Plugin Name: Custom Comparative Div Tables
Plugin URI: https://www.tourdumondiste.com
Description: Mon plugin pour faire des tableaux
Version: 8
Author: François Rosenbaum
Author URI: https://www.tourdumondiste.com
License: GPL2
*/
function custom_comparative_div_tables_load_script() {
if (is_singular()) { // Vérifie si c'est un article
global $post;
$content = $post->post_content;
// Vérifie si ACF est activé et si la fonction get_fields() est disponible
if (function_exists('get_fields')) {
// Récupérer les champs ACF pour l'article en cours
$fields = get_fields($post->ID);
// Concaténer les valeurs des champs ACF avec le contenu principal
$acf_content = '';
foreach ($fields as $field) {
if (is_array($field)) {
$acf_content .= implode(' ', $field);
} else {
$acf_content .= $field;
}
}
// Combiner le contenu principal et les champs ACF
$combined_content = $content . $acf_content;
// Rechercher la présence de l'élément avec la classe 'test'
$has_test_element = strpos($combined_content, 'test') !== false;
if ($has_test_element) {
// Charger les fichiers JavaScript et CSS nécessaires
wp_enqueue_script('custom-comparative-div-tables', plugin_dir_url(__FILE__) . 'js/custom-comparative-div-tables.min.js', array('jquery'), '9', false);
wp_enqueue_script('custom-comparative-div-tables-syncscroll', plugin_dir_url(__FILE__) . 'js/syncscroll.js', array(), '9', false);
wp_enqueue_style('custom-comparative-div-tables-css', plugin_dir_url(__FILE__) . 'css/custom-comparative-div-tables.min.css', array(), '9', false);
}
}
}
}
add_action('wp_enqueue_scripts', 'custom_comparative_div_tables_load_script');Voilà a structure des mes champs ACF :
- Contenu : le groupe de champs à la racine de mon plugin ACF
- nom du champ : flexible : type flexible content
- nom du champ : chapitre : Layout
- nom du champ : paragraphes : type flexible content
- une_colonne : layout
- nom du champ : colonne_1 : type wysisyg editor
- deux_colonnes : layout
- nom du champ : colonne_1 : type wysisyg editor
- nom du champ : colonne_2 : type wysisyg editor
- une_colonne : layout
- nom du champ : paragraphes : type flexible content
- nom du champ : chapitre : Layout
- nom du champ : flexible : type flexible content
Les champs ACF wysiwyg que vont remplir les rédacteurs sur la page d’édition des articles (custom post type) s’appellent colonne_1 ou colonne_2. Il peut y avoir un nombre différent de ces champs sur la page d’édition selon l’article. En effet, le rédacteur peut ajouter un champ avec un bouton +.
Je n’utilise pas Guttenberg, mais encore l’ancien éditeur classique de WordPress.J’anticipe en vous disant que je suis bien sûr des noms de mes fichiers, de leurs URLs, etc. Mon problème n’est probablement pas une bête erreur de code de ce type.
Si jamais un expert sait comment je peux faire ça ou si c’est tout simplement impossible ce serait génial. je serais hyper reconnaissant. J’ai plein d’applications possible pour mon site, si jamais je pouvais faire ça.
À bientôt j’espère,
21 juillet 2023 à 4 h 18 min #2458082je pense que c’est possible de faire cela.
en ce qui concerne votre code, vous devez le débuguer donc commencez par exemple par afficher le contenu des variables pour voir si elles contiennent les données souhaitées.
21 juillet 2023 à 12 h 42 min #2458096Salut Mathieu,
Merci. Je ne sais pas afficher le contenu des variables. Je pense que je peux trouver comment faire avec un peu de recherches je crois, mais si tu peux me m’expliquer ça facilement je suis preneur. Et puis, je ne sais pas non plus comment faire pour afficher le contenu des variables sans que mes visiteurs ne voit s’afficher ça sur la page. J’imagine qu’il ya un équivalent de console log en php, pour voir ça dans la console du navigateur ? Je code sur le site en prod. Je sais que c’est pas terrible, mais bon…
- Cette réponse a été modifiée le il y a 1 année et 6 mois par FrancoisR.
21 juillet 2023 à 22 h 49 min #2458114en effet ce n’est pas pratique de travailler sur le site en production directement.
je vous conseille de dupliquer votre site, cela vous permettra d’activer le mode débugage sur le site de travail pour voir d’éventuelles erreurs php :
21 juillet 2023 à 23 h 31 min #2458115Oui c’est justement ce que je voulais éviter. Ça prend du temps.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.