Nu primesc postări din tipurile personalizate de postări

10 feb. 2015, 16:41:38
Vizualizări: 2.49K
Voturi: 1

Am creat un șablon personalizat și încerc să obțin postări de tipul "song", dar pe pagină apar doar header-ul și footer-ul. Conținutul postărilor nu apare. Chiar dacă încerc să afișez postări obișnuite, tot nu apare conținut. Trebuie să înregistrez acest șablon undeva în tema? Sau trebuie să apelez ceva aici?

Codul meu:

<?php 
/* Șablon Nume: Pagină Song
 *
 * Selectabil dintr-un meniu dropdown pe ecranul de editare a paginii.
 */

get_header(); ?>

<div>

<?php 
if ( have_posts() ) {
   while ( have_posts() ) {
      the_post(); 
      query_posts( 'post_type=song'); 
   } // sfârșit while
} // sfârșit if
?></div>

<?php get_footer(); ?>

Vă rog să mă ajutați să corectez codul meu. Vreau să afișez toate postările din custom post type "songs". Am creat deja tipul personalizat de postare.

Introduc codul de mai sus în editorul WordPress, am instalat un plugin numit "PHP execution" care execută codul PHP.

5
Comentarii

Aceasta face parte dintr-o pagină de arhivă pentru tipul personalizat de postare?

Manny Fleurmond Manny Fleurmond
10 feb. 2015 17:36:52

Doresc să afișez toate postările de tipul personalizat "melodii". Unde doriți să afișați aceste postări?

Brad Dalton Brad Dalton
10 feb. 2015 19:12:14

@PieterGoosen - Da, am acceptat.

rahul bhatt rahul bhatt
11 feb. 2015 15:34:11

@BradDalton - Am creat un șablon personalizat. În codul acelui șablon, am apelat header-ul, footer-ul și loop-ul de deasupra pentru a obține postările de tip personalizat, dar în pagină apar doar header-ul și footer-ul :(

rahul bhatt rahul bhatt
11 feb. 2015 15:35:09

@MannyFleurmond - Nu...

rahul bhatt rahul bhatt
11 feb. 2015 15:38:32
Toate răspunsurile la întrebare 5
6

Aveți două probleme majore în codul dumneavoastră:

  • query_posts trebuie să fie plasat înainte de bucla dumneavoastră, nu în interiorul ei

  • Nu utilizați niciodată query_posts decât dacă aveți nevoie să stricați ceva pe pagina dumneavoastră

Pentru a afla de ce să nu folosiți query_posts și când să utilizați o interogare personalizată și cum să o folosiți, consultați acest articol pe care l-am scris acum ceva timp

Deci, pentru a corecta codul din șablonul dumneavoastră, vom folosi WP_Query și nu query_posts, și vom face interogarea înainte de buclă

Încercați ceva de genul:

<?php 
 /* Șablon Nume: Pagină Melodii
 *
 * Selectabil dintr-un meniu derulant pe ecranul de editare a paginii.
 */
?>

<?php get_header(); ?>

<div>

    <?php 
    $args = array(
        'post_type' => 'song' // Tipul postării: melodie
    );
    $q = new WP_Query($args);
    if ( $q->have_posts() ) {
        while ( $q->have_posts() ) {
            $q->the_post(); 

            //Adăugați etichetele șablonului ca mai jos
            the_title(); // Afișează titlul postării

        } // sfârșit while
        wp_reset_postdata(); // Resetează datele postării
    } // sfârșit if
    ?>

</div>

De asemenea, nu uitați niciodată să resetați interogările personalizate dacă ați folosit bucla sau setup_postdata($post) cu wp_reset_postdata()

11 feb. 2015 16:01:06
Comentarii

Mulțumesc mult pentru răspuns, folosind codul de mai sus primesc doar numele postării, dar eu trebuie să afișez titlul postării cu thumbnail și puțin conținut, deci ar trebui să folosesc the_content()?

rahul bhatt rahul bhatt
11 feb. 2015 16:14:38

Da, ar trebui să adaugi orice ai nevoie, acesta este doar un exemplu de bază. Pentru conținut, va trebui să adaugi the_content();. Totodată, va trebui să adaugi și toată structura HTML. Această parte depinde de preferințele personale, ceva cu care nu te pot ajuta :-)

Pieter Goosen Pieter Goosen
11 feb. 2015 16:16:46

Pentru o structură de bază a template-ului, poți arunca o privire peste temele incluse precum twentyfifteen. Acestea ar trebui să îți ofere un punct bun de plecare

Pieter Goosen Pieter Goosen
11 feb. 2015 16:17:46

Cum pot apela stilul CSS implicit al postărilor pentru această postare personalizată? Vreau doar ca postarea mea personalizată să fie afișată corect, la fel ca o postare normală, în ceea ce privește stilul/CSS-ul.

rahul bhatt rahul bhatt
12 feb. 2015 10:44:08

Pur și simplu copiază bucla ta între partea while din index.php și adaug-o în bucla de aici. După cum am spus, aceasta este o secțiune de preferințe personale pe care va trebui să o rezolvi singur, din păcate. Nu pot să știu niciodată stilurile temei tale. De aceea această secțiune este off topic aici :-)

Pieter Goosen Pieter Goosen
12 feb. 2015 10:57:06

Bine...Să încerc..:)

rahul bhatt rahul bhatt
12 feb. 2015 14:12:47
Arată celelalte 1 comentarii
0

Nu este necesar să creați șabloane personalizate dacă doriți doar să afișați toate paginile într-o arhivă pentru tipul personalizat de postare (CPT):

Pur și simplu accesați http://example.com/melodii iar WordPress va afișa toate paginile CPT într-o arhivă standard conform ierarhiei de șabloane. Înlocuiți example.com cu domeniul dumneavoastră.

Este posibil să fie necesară salvarea din nou a Legăturilor permanente pentru a reseta regulile de rescriere și să includeți următorii parametri în funcția register_post_type:

'has_archive' => true,

'rewrite' => array( 'slug' => 'melodii', 'with_front' => false ),

Dacă doriți să creați o pagină personalizată pentru arhiva CPT, creați un fișier nou și denumiți-l archive-melodie.php în directorul rădăcină al temei dumneavoastră.

11 feb. 2015 17:32:37
0

Accesează Setări > Legături permanente și dă clic pe butonul "Salvează modificările". Acum reîmprospătează pagina.

11 nov. 2020 12:27:17
2
-1

Sau chiar

query_posts( 'post_type=song');
10 feb. 2015 22:37:42
Comentarii

Poți adăuga mai multe explicații despre de ce acest lucru ar funcționa sau de ce acesta este un răspuns la întrebare?

Howdy_McGee Howdy_McGee
10 feb. 2015 22:54:37

Am vrut doar să spun să încerci 'post_type=song' în loc de 'post_type=songs' Îmi cer scuze pentru confuzie

Mike Mike
10 feb. 2015 23:03:45
0
-2

Ai încercat 'post_type' => 'songs'?

Referință: Interogare după Tipul Postării

10 feb. 2015 17:13:26