web-dev-qa-db-fra.com

Les codes courts personnalisés ne fonctionnent pas avec le thème __s

J'essaie d'enregistrer un nouveau shortcode sur mon thème personnalisé.

Dans functions.php, j'ai créé une fonction de test de base comme suit

function get_second_image($atts) {
    echo ‘test’;
}

Et enregistré juste en dessous

add_shortcode( ‘case_study_second_image_sc’, ‘get_second_image’ );

À l'aide de l'éditeur WYSIWYG, j'insère le shortcode [case_study_second_image_sc] mais il ne fait que s'afficher en tant que code brut sur la page.

J'appelle le contenu de la page en utilisant

<?php the_content(); ?>

dans le fichier modèle.

Sur la base d'informations provenant d'une autre question SE, j'ai effectué une recherche dans les fichiers de mon thème pour toute fonction d'ajout ou de suppression de filtres, mais rien ne semble gêner.

1
S. Coll

Veillez à utiliser des guillemets droits, par exemple. ' ou " et pas des citations frisées , ou  pour les chaînes.

De plus, les codes courts devraient renvoyer leur sortie, et non pas y revenir.

Lorsque WordPress trouve un shortcode sans rappel, il affiche sa balise exactement telle qu’elle a été entrée, par exemple. [case_study_second_image_sc].

La balise shortcode ‘case_study_second_image_sc’ et le rappel associé ‘get_second_image’ seront analysés sous forme de constantes par PHP. Cela signifie que nous n’aurons pas de balise de code court ou de fonction de rappel valide pour notre code court et que WP ne fera que sortir le code court tel qu’il a été saisi par l’utilisateur.

L'activation du rapport d'erreur permet de trouver ces erreurs complexes (des citations frisées apparaissent parfois dans le code copié/collé et il peut être difficile de différencier les citations dans certains éditeurs).

Use of undefined constant ‘case_study_second_image_sc’ - assumed '‘case_study_second_image_sc’'

Use of undefined constant ‘get_second_image’ - assumed '‘get_second_image’'
2
Dave Romsey

Voir la documentation ici https://codex.wordpress.org/Shortcode_API . Votre fonction doit renvoyer la valeur que vous souhaitez remplacer par le shortcode. 'echo' n'affichera rien. Vous devez return 'test'; insérer le texte 'test' dans le contenu.

À partir de la documentation dans le lien ci-dessus (soulignement ajouté):

Lorsque the_content est affiché, l'API shortcode analysera tous les shortcodes enregistrés tels que "[myshortcode]", séparera et analysera les attributs et le contenu, le cas échéant, et leur passera la fonction de gestionnaire de shortcode correspondante. Toute chaîne renvoyée ( non répercutée ) par le gestionnaire de shortcode sera insérée dans le corps de la publication à la place du shortcode lui-même.

J'espère que cela t'aides.

0
Rick Hellewell