Cum să apelezi o funcție într-o pagină/articol pentru a genera conținut în mod dinamic?
Dacă vorbești despre conținutul unui articol/pagină, nu este posibil. Iată trei moduri diferite de a rezolva problema ta. Prima metodă îți va oferi posibilitatea de a adăuga conținutul generat în interiorul conținutului articolului (sau paginii). Celelalte două vor fi afișate într-unul dintre fișierele tale de template. De exemplu, în single.php sau page.php.
1. Shortcode
Aceasta este mai mult sau mai puțin copiată din exemplele Shortcode API. Plasează acest cod în functions.php sau într-unul dintre plugin-urile tale personalizate.
Poți include funcția în editorul WYSIWYG al articolului sau paginii cu următoarea sintaxă:
[unique_shortcode_name foo="123" bar="medium"]
Plasează acest cod în functions.php sau într-unul dintre plugin-urile tale personalizate:
add_shortcode('unique_shortcode_name', 'generate_content');
function generate_content($attributes) {
// Parsează parametrii/atributele și le face disponibile ca variabile.
extract(shortcode_atts(array(
'foo' => 'valoare implicită pentru foo',
'bar' => 'valoare implicită pentru bar',
), $attributes));
// Generează conținut
$output = complex_content_generation_goes_here();
return $output;
}
Poți crea și un shortcode care încadrează conținut. Shortcode-urile care încadrează conținut îți oferă posibilitatea de a prelua text ca parametru. Poate fi apelat astfel:
[unique_shortcode_name foo="123"]Text de intrare[/unique_shortcode_name]
Citește mai multe despre acest lucru în documentația Shortcode API.
2. Template de pagină
Aceasta îți va oferi posibilitatea de a seta un fișier de template specific pentru o pagină (acest lucru nu va funcționa pentru articole obișnuite). Iată documentația despre Template-urile de pagină.
Poți baza template-ul pe un fișier de template existent, precum page.php. Singura cerință este să plasezi un comentariu multiliniu la începutul fișierului de template, astfel:
<?php
/*
Template Name: Pagina de Produse
*/
?>
Nu există nicio cerință specifică pentru numele fișierului, dar încearcă să nu îl denumești astfel încât să fie preluat de WordPress prin ierarhia de template-uri (vezi punctul 3.). Dacă faci asta, WordPress ar putea folosi template-ul tău și pentru alte pagini, ceea ce ar duce la rezultate neașteptate.
Dacă ai făcut corect cele de mai sus, ar trebui să vezi o secțiune Template cu un meniu derulant sub Atributele Paginii când editezi sau creezi o pagină. Ca în imaginea de mai jos:

3. Ierarhia de Template-uri
Ierarhia de Template-uri decide ce template ar trebui folosit pentru vizualizarea curentă a paginii și face acest lucru căutând un fișier potrivit după nume. Există o imagine foarte descriptivă a Ierarhiei de Template-uri în Codex. Te rugăm să o examinezi pentru a înțelege mai bine cum funcționează Ierarhia de Template-uri.
Vreau să adaug funcția doar pe o singură pagină (pagina "Despre mine") și nu pe toate paginile. Vreau să apelez funcția într-o anumită poziție a acelei pagini. Am încercat să apelez funcția adăugând comenzi PHP în cadrul sursei HTML folosind Funcția de test este <?php contentGenerator($true); ?> ., dar nu a funcționat.
Sven
Dacă vorbești despre conținutul unui articol/pagină, nu este posibil. Ce poți face este să adaugi un shortcode și să-l apelezi. Ai putea de asemenea să ai un fișier de șablon specific sau să folosești ierarhia de șabloane pentru acea pagină.
hampusn