Suport » Probleme și soluții » Neclaritate archive.php – template hierarchy

  • Contextul:
    Am creat un plugin, apoi, un custom post type care imi afiseaza niste text; tema folosita este twentytwelve – modificata.
    Din ce am citit pe codex.org:
    In general, WP foloseste fisierul archive.php din tema pentru a genera o lista de posturi. Putem insa folosi un fisier numit archive-{post type}.php pentru a crea diferite layout-uri pentru diferite posturi.
    Din ce am citit, se face o copie a fisierului archive.php, apoi se schimba denumirea ( de ex, archive-wp_question.php ), dupa care se fac modificari, dupa plac.
    Fisierul asta, archive.php are, printre altele, urmatoarele linii :

    while ( have_posts() ) : the_post();
    get_template_part( 'content', get_post_format() );
    endwhile;

    Tema activata foloseste un template separat pentru a genera continutul fiecarui custom post type. Si atunci, nu modific fisierul content.php, ci il copiez, ii schimb denumirea in content-questions.php, apoi fac modificarile necesare aici.
    Apoi, in fisierul archive-wp_question.php, inlocuiesc in functia get_template_part() parametrul $slug, respectiv inlocuiesc ‘content’ cu ‘content-questions’.
    Acum, mie nu mi se afiseaza nimic in homepage, decat (‘There are no posts to display’). Ca sa rezolv asta, am introdus urmatoarea linie in fisierul index.php al temei:
    query_posts('post_type=wp_question');
    Cu asta se pare ca problema afisarii custom-posturilor e rezolvata ( desi mi se pare o solutie proasta).
    Acum vine problema de care ma lovesc, cea de hierarchy (cred): se pare ca nenea wp nu ‘vede’ fisierul archive-wp_questions.php ( nu prelucreaza modificarile scrise acolo), ci doar daca modific index.php:
    O data, cu query_posts('post_type=wp_question');, apoi sa modific `<?php while ( have_posts() ) : the_post(); ?>
    <?php get_template_part( ‘content’, get_post_format() ); ?>
    <?php endwhile; ?>`
    cu

    <?php while ( have_posts() ) : the_post(); ?>
    <?php get_template_part( 'content-questions', get_post_format() ); ?>
    <?php endwhile; ?>

    In cazul asta, posturile mele sunt afisate exact cum vreau. Altfel, nu mi se afiseaza deloc.
    Ma gandesc ca problema e la query_posts('post_type=wp_question');.. sau.. inca nu-mi dau seama..

    Care e problema ?
    P.S. Stiu ca am scris mult ( si probabil prost ) dar sunt la inceput, si daca as sti exact cum sa pun problema, probabil as gasi si raspunsul.. indurare :P.

Vizualizare 3 răspunsuri - 1 la 3 (din 3 în total)
  • Ai prins destul de bine ideea, solutia ta e fiabila, din pacate custom post type-urile sunt un pic „avansate” si e greu pentru extensii(plugin-uri) sa tina pasul cu ele la fel si temele de acea implementarea de custom post types poate parea un pic „murdara” dar solutia ta este foarte aproape de codex si cred ca poti sa ramai la ea.

    Inițiator fir de discuții MSteel

    (@msteel)

    Da, ar mai fi o chestie:
    Lucrand in ‘homepage’, ca sa zic asa, fisierul pe care il cauta WP in themes ar trebui sa fie home.php. Cum nu-l am, fuge direct la baza, la index.html. Probabil si aici e o problema de studiat..
    Mai citesc, ma mai documentez, si sper sa vin cu intrebari mai bune :).

    Nup, homepage-ul nu trebuie sa fie home.php (homepage-ul se seteaza din backend si poate fi orice pagina care are orice template … ) index.php este cel folosit default pentru homepage ( cel putin asa este structurat twenty * … cel mai bine e sa urmaresti temele default – sa le privesti ca standard)
    Uite aici index.php pentru Twenty_Fourteen

Vizualizare 3 răspunsuri - 1 la 3 (din 3 în total)
  • Subiectul „Neclaritate archive.php – template hierarchy” este închis pentru răspunsuri noi.