Cum să apelezi o funcție într-o pagină/articol pentru a genera conținut în mod dinamic?

9 oct. 2012, 09:04:30
Vizualizări: 50.3K
Voturi: 4

Am adăugat următoarea funcție în fișierul functions.php

function contentGenerator($param) {
   if($param) {
      echo "Content true";
   } else {
      echo "Content false";
   }
}

Cum pot apela această funcție într-o pagină sau articol specific de blog?

0
Toate răspunsurile la întrebare 2
0

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:

Imagine care arată setările de template în editarea unei pagini

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.

10 oct. 2012 10:03:14
4

contentGenerator($param);
pur și simplu puneți acest cod în fișierul page.php.
Dacă definiți funcții în fișierul function.php, acele funcții pot fi utilizate în mai multe fișiere de șablon ale temei dumneavoastră.

9 oct. 2012 09:17:01
Comentarii

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 Sven
9 oct. 2012 09:24:45

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 hampusn
9 oct. 2012 09:36:24

@hampusn te rog să muți această informație într-un răspuns separat

Rarst Rarst
10 oct. 2012 03:45:58

@Rarst Sigur. Nu am avut timp să scriu un răspuns mai detaliat, dar voi avea unul pregătit în scurt timp.

hampusn hampusn
10 oct. 2012 09:30:10