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 permettant de la transformer en shortcode).
Comment pourrais-je faire ça?
C'est ce que j'ai fait: j'ai deux fichiers. L'un appelé 'profiletemplate.php' et l'autre appelé 'scodes'. Ils font tous les 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.
Donc, cette méthode fonctionne, 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.
Quelque chose que j’avais oublié dans mon commentaire précédent était que shortcodes return content, la valeur suggérée include
et mon alternative get_template_part
afficheront directement le contenu (c’est ce que vous voyez avec le contenu qui apparaît en haut. de votre page au lieu de l’appel du shortcode). Pour contrer cela, nous devons utiliser output buffering .
Définissez le shortcode dans votre functions.php (ou dans le fichier des fonctions spécifiques au site fichier).
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èmes, vous avez besoin d’un fichier appelé my_form_template.php
qui sera chargé n’importe où vous placerez le shortcode.
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>