Comment appeler une fonction dans une page / un article, pour générer dynamiquement du contenu?
2 réponses
- votes
-
- 2012-10-10
Si vousparlez du contenu d'un article/d'unepage,cen'estpaspossible. Voicitroisfaçons différentes de résoudre votreproblème: lapremière vous donnera lapossibilité d'ajouter le contenugénéré dans le contenu de votre article (ou de votrepage). Les deux autres serontimprimés dans l'un de vosfichiersmodèles. Parexemple. dans votre
single.php
oupage.php
.1. Shortcode
Ceciestplus oumoins copié/collé àpartir desexemples d ' Shortcode API . Placez-le dans votre
functions.php
ou dans l'un de vospluginspersonnalisés.Vouspouvezinclure lafonction WYSIWYG de votre article oupage avec la syntaxe suivante:
[unique_shortcode_name foo="123" bar="medium"]
Placez ceci dans votrefunctions.php ou dans l'un de vospluginspersonnalisés:
add_shortcode('unique_shortcode_name', 'generate_content'); function generate_content($attributes) { // Parses the parameters/attributes and makes them available as variables. extract(shortcode_atts(array( 'foo' => 'default value for foo', 'bar' => 'default value for bar', ), $attributes)); // Generate stuff $output = complex_content_generation_goes_here(); return $output; }
Vouspouvez également créer un shortcode quienglobe le contenu. L'insertion de codes courts vouspermet deprendre dutexte commeparamètre. Celapourrait être appelé quelque chose comme ceci:
[unique_shortcode_name foo="123"]Some text input[/unique_shortcode_name]
Pouren savoirplus,consultez la Documentation sur l'API Shortcode .
2. Modèle depage
Cela vous donnera lapossibilité de définir unfichier demodèle spécifiquepour une page (celane fonctionnerapaspour lespublications régulières). Voici la documentation sur les Modèles depage .
Vouspouvezbaser votremodèle àpartir d'unfichier demodèle déjàexistant,comme
page.php
. La seuleexigenceest que vousplaciez un commentairemultiligneen haut de votrefichiermodèle comme ceci:<?php /* Template Name: Products Page */ ?>
Iln'y apas vraiment d'exigencepour lenom dufichier,maisessayez dene pas lenommerpour qu'il soit reprispar WordPress via la hiérarchie desmodèles (voirn ° 3.). Si vous lefaites,WordPresspourrait également utiliser votremodèlepour d'autrespages,ce qui vous donnera des résultatsinattendus.
Si vous avez correctementfait ce quiprécède,vous devriez voir une section Modèle avec une liste déroulante sous Attributs depage lorsque vousmodifiez ou créez unepage. Comme ceci:
3. Hiérarchie desmodèles
La hiérarchie desmodèles décide dumodèle à utiliserpour lapage vue actuelleet lefaiten recherchant unfichier appropriépar sonnom. Ilexiste uneimage vraiment descriptive de la hiérarchie desmodèles au Codex. Veuillezexaminer celle-cipourmieux comprendre lefonctionnement de la hiérarchie desmodèles.
If you are talking about a post's/page's content, it's not possible. Here are three different ways of solving your problem.The first way will give you the possibility to add the generated content inside your post's (or page's) content. The other two will be printed in one of your template files. E.g. in your
single.php
orpage.php
.1. Shortcode
This is more or less copy/pasted from the Shortcode API examples. Place that in your
functions.php
or in one of your custom plugins.You can include the function your post's or page's WYSIWYG with the following syntax:
[unique_shortcode_name foo="123" bar="medium"]
Place this in your functions.php or in one of your custom plugins:
add_shortcode('unique_shortcode_name', 'generate_content'); function generate_content($attributes) { // Parses the parameters/attributes and makes them available as variables. extract(shortcode_atts(array( 'foo' => 'default value for foo', 'bar' => 'default value for bar', ), $attributes)); // Generate stuff $output = complex_content_generation_goes_here(); return $output; }
You can also create a shortcode which encloses content. Enclosing shortcodes gives you the ability to take text as a parameter. It could be called something like this:
[unique_shortcode_name foo="123"]Some text input[/unique_shortcode_name]
Read more about that at the Shortcode API documentation.
2. Page template
This will give you the ability to set a specific template file for a page (this will not work for regular posts). Here's the documentation about Page templates.
You can base your template from an already existing template file, like
page.php
. The only requirement is that you place a multiline comment at the top of your template file like this:<?php /* Template Name: Products Page */ ?>
There isn't really any requirement for the file name, but try not to name it so it might get picked up by WordPress through the template hierarchy (see nr 3.). If you do, WordPress might use your template for other pages as well which will give you unexpected results.
If you have done the above correctly, you should see a Template section with a dropdown under Page Attributes when you are editing or creating a page. Like this:
3. Template Hierarchy
The Template Hierarchy decides what template should be used for the current page view and does so by looking for an appropriate file by it's name. There is a really descriptive image of the Template Hierarchy at the Codex. Please examine that one to better understand how the Template Hierarchy works.
-
- 2012-10-09
contentGenerator($param);
mettez simplement ce code dans lefichierpage.php.
Si vous définissez desfonctions dansfunction.php que lesfonctionspeuvent utiliser dansplusieursfichiersmodèles de votrethème.contentGenerator($param);
simply put this code in page.php file.
If you define functions in function.php that functions can use in several template files of your theme.-
Je souhaite uniquement ajouter lafonction à une seulepage (lapage "Àpropos demoi")et non àtoutes lespages.Je veux appeler lafonction à une certaineposition de cettepage.J'aiessayé d'appeler lafonctionen ajoutant des commandes PHP dans la source HTMLen utilisant `Testfunctionis Php contentGenerator ($true);?> .`,mais celan'apasfonctionné.I only want to add the function to a single page (the "About me" page) and not to all pages. I want to call the function at a certain position of that page. I tried to call the function by adding PHP commands within the HTML Source using `Test function is .`, but this did not work.
- 0
- 2012-10-09
- Sven
-
Si vousparlez du contenu d'un article/d'unepage,cen'estpaspossible.Ce que vouspouvezfaire,c'est ajouter un [shortcode] (http://codex.wordpress.org/Shortcode_API)et l'appeler.Vouspouvez également avoir un [fichiermodèle] spécifique (http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates) ou utiliser la [hiérarchie demodèles] (http://codex.wordpress.org/Template_Hierarchy)pour cettepage.If you are talking about a post's/page's content, it's not possible. What you can do is to add a [shortcode](http://codex.wordpress.org/Shortcode_API) and call that. You could also have a specific [template file](http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates) or use the [template hierarchy](http://codex.wordpress.org/Template_Hierarchy) for that page.
- 1
- 2012-10-09
- hampusn
-
@hampusn,veuillez déplacer cesinformations vers une réponse distincte@hampusn please move that info to a separate answer
- 0
- 2012-10-10
- Rarst
-
@Rarst Bien sûr.Jen'aipaseu letemps d'écrire une réponseplus détailléemaisj'en aurai uneprête danspeu detemps.@Rarst Sure thing. I didn't have the time to write a more extended answer but will have one ready in a short time.
- 0
- 2012-10-10
- hampusn
J'ai ajouté lafonction suivante aufichier
functions.php
Commentpuis-je appeler cettefonction dans un article ou unepage deblog spécifique ?