Pagină index pentru custom post type

19 dec. 2013, 18:26:49
Vizualizări: 15.3K
Voturi: 2

Am înregistrat un custom post type și vreau să creez o pagină unde voi lista unele articole, va fi ca o pagină de index.

Am creat o pagină de arhivă numită mycpt-archive.php și o pagină numită myCPT.php.

Am adăugat un URL personalizat în meniu numit "myCPT" astfel: www.mywebsite.com/mycpt Acum, când dau click din meniul front-end pe "myCPT", afișează conținutul din mycpt-archive.php și nu din myCPT.php.

Am verificat ierarhia de șabloane din CODEX și pare că sunt pe drumul cel bun.

Când dau click pe "myCPT" din meniul front-end, pagina afișată este mycpt-archive.php și nu myCPT.php cum mă așteptam să se deschidă.

Ce am omis aici? Mulțumesc!

3
Comentarii

Nu este clar de ce creezi două șabloane pentru o sarcină care pare a fi aceeași? De asemenea, conform ierarhiei, numele șablonului ar trebui să fie în formatul archive-$posttype.php, așa că nu sunt sigur cum se încarcă varianta ta inversată.

Rarst Rarst
19 dec. 2013 18:29:17

Am nevoie de două pagini, una pentru a lista unele postări din tipul personalizat de postare care ar trebui să fie cea implicită. Și alta pentru a lista o arhivă a tuturor postărilor din acel tip personalizat de postare, care va fi archive-myCPT.php.

agis agis
19 dec. 2013 19:48:55

Ideea este să am un șablon de pagină care va fi folosit pentru a afișa unele postări din tipul personalizat de postare, dar care nu va fi afișat în archive-myCPT.php sau nu este afișat implicit dacă este un șablon?

agis agis
19 dec. 2013 20:13:44
Toate răspunsurile la întrebare 2
1

Dacă ai:

register_post_type( 'my_custom_post_type', $args );

Și ai nevoie de o pagină personalizată care să afișeze toate intrările din acest tip de postare personalizată, trebuie să creezi: archive-my_custom_post_type.php. Dar dacă nu ai nevoie de o pagină personalizată, WordPress va folosi archive.php pentru a afișa arhiva tipului tău de postare personalizată.

Dacă ai nevoie doar să personalizezi pagina unei intrări, trebuie să creezi: single-my_custom_post_type.php

Unde creezi tipul de postare personalizată, în functions.php al temei sau folosind un plugin?

Dacă folosești functions.php, trebuie să creezi archive-my_custom_post_type.php sau single-my_custom_post_type.php în directorul temei.

Dacă folosești un plugin, trebuie să creezi archive-my_custom_post_type.php sau single-my_custom_post_type.php în directorul pluginului și să indici WordPress-ului să le citească, așa că include această funcție în pluginul tău:

function get_custom_post_type_template($template) {
    global $post;

    if ($post->post_type == 'my_custom_post_type') {
        $template = dirname( __FILE__ ) . '/archive-my_custom_post_type.php';
    }
    return $template;
}

//add_filter( "single_template", "get_custom_post_type_template" ); //pentru pagina single
add_filter( "archive_template", "get_custom_post_type_template" ); //pentru arhivă
19 dec. 2013 19:06:15
Comentarii

Nu folosesc un plugin, vreau doar să creez un șablon de pagină unde pot afișa câteva postări din CPT-ul meu și un altul numit "archive-myCPT.php" unde să afișez arhivele.

agis agis
19 dec. 2013 20:23:05
2

Sună aproape ca și cum ai crea o pagină de șablon personalizată numită cum dorești și ai introduce codul de interogare personalizat pe care îl dorești în acea pagină de șablon specifică. După ce ai creat pagina de șablon, creează o pagină WordPress reală și setează-o să utilizeze acea pagină de șablon personalizată. Are sens?

  1. Crează o pagină de șablon personalizată.
  2. Adaugă comentariile necesare pentru a denumi pagina de șablon.
  3. Scrie interogarea personalizată wp_query pentru a extrage postările specifice pe care le dorești.
  4. Crează o pagină în WordPress.
  5. Setează-o să utilizeze pagina de șablon pe care ai creat-o.
  6. Apasă publicare.

După ce ai terminat, probabil vei dori să editezi pagina de șablon pentru a ajusta și perfecționa interogarea ta.

Spune-mi dacă sunt pe drumul cel bun pentru nevoile tale.

19 dec. 2013 21:44:42
Comentarii

Am creat un fișier șablon, dar nu îl pot atribui din panoul de control, funcționează doar pentru paginile normale, nu și pentru paginile de tip post personalizat.

agis agis
20 dec. 2013 15:13:22

Îmi cer scuze pentru întârzierea în răspuns. Va trebui să creezi un wp_query() personalizat în interiorul șablonului cu propriul său loop. Ai putea face ceva de genul:

`$postTypeQuery = new wp_query( array('post_type'=> 'postTypeSlug'));

if($postTypeQuery->have_posts()){ while($postTypeQuery->have_post(){ $postTypeQuery->the_post(); echo get_the_title(); echo get_the_id(); echo get_the_content(); } }`

MiracleGotMojo MiracleGotMojo
14 ian. 2014 01:29:09