Page de modèle de retour HTML avec fonction PHP

10

Je veux créer un formulaire que je peux utiliser un shortcode pour insérer dans mon site.

Ce serait vraiment bien si je pouvais créer la partie HTML dans un fichier séparé puis l'insérer avec un shortcode PHP (pour séparer la logique de la page de la mécanique de la transformer en shortcode).

Comment pourrais-je faire ça?

-- Mettre à jour --

Voici ce que j'ai fait: j'ai deux fichiers. L'un appelé «profiletemplate.php» et l'autre appelé «scodes». Ils font tous deux partie d'un plugin que je crée pour mon site avec un init.php qui les initialise. Voici leur contenu:

init.php

<?php
require_once(dirname(__FILE__).'/pages/scodes.php');
?>

scodes.php

function jf_testcode() {
    include dirname(__FILE__) . 'profiletemplate.php';
}

add_shortcode('testfield', 'jf_testcode');

profiletemplate.php

<?php // Template for my form shortcode ?>
<form>
Testing
</form>

J'utilise ensuite le shortcode [testfield] sur une page de mon site.

Update 2

Cette méthode fonctionne donc, mais elle n'insère pas le code HTML où le shortcode est appelé. Au lieu de cela, il s'agit simplement d'insérer le contenu en haut de la page (comme si je disais 'echo' Testing '' au lieu de 'return' Testing '' dans une fonction.

William
la source
Eh bien, pour commencer, vous POUVEZ écrire du HTML simple dans un fichier PHP. Vous devez alors écrire une fonction dans votre functions.phpqui nécessite / inclut ce certain fichier, et en add_shortcode()configurant le shortcode souhaité pour appeler votre fonction.
tfrommen

Réponses:

24

Quelque chose que j'ai oublié dans mon commentaire précédent était que les shortcodes renvoient du contenu, à la fois la suggestion includeet mon alternative get_template_partproduiront directement le contenu (c'est ce que vous voyez avec le contenu apparaissant en haut de votre page au lieu de l'endroit où le shortcode est appelé). Pour contrer cela, nous devons utiliser la mise en mémoire tampon de sortie .

Définissez le shortcode dans votre fichier functions.php (ou dans le fichier de fonctions propre à votre site ).

function my_form_shortcode() {
    ob_start();
    get_template_part('my_form_template');
    return ob_get_clean();   
} 
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );

Ensuite, dans votre dossier de thème, vous avez besoin d'un fichier appelé my_form_template.phpqui sera chargé partout où vous placerez le shortcode.

helgatheviking
la source
Parfait! Cela fonctionne fabuleusement!
William
Si vous essayez de faire la même chose dans un plugin, vous devez utiliser include. Voir wordpress.stackexchange.com/a/124794/75817
patrics
Wow ... sauvé ma journée ... code
génial
2

Ajoutez ce qui suit à votre functions.php :

function my_form_shortcode() {
    include dirname( __FILE__ ) . 'my_form_template.php';
} // function my_form_shortcode
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );

Fichier my_form_template.php :

<?php // Template for my form shortcode ?>
<form ...>
    FIELDS
</form>
tfrommen
la source
1
Vous pouvez également utiliser à l' get_template_part()intérieur de votre fonction de shortcode.
helgatheviking
J'ai essayé d'implémenter la solution de @ tf - j'ai ajouté une mise à jour à mon message à ce sujet
William
@helgatheviking - comment fonctionne cette fonction?
William
Voir le codex pour une description de get_template_part () et voir ma réponse pour savoir comment l'utiliser en conjonction avec votre shortcode.
helgatheviking