Șablon pentru taxonomie în tipuri de postări personalizate
Am creat un tip de postare personalizată portfolio
și o taxonomy
bineînțeles.
function taxonomies_portfolio() {
$labels = array(
'name' => _x( 'Categorii portofoliu', 'nume general taxonomie' ),
'singular_name' => _x( 'Categorii portofoliu', 'nume singular taxonomie' ),
'search_items' => __( 'Caută categorii portofoliu' ),
'all_items' => __( 'Toate categoriile portofoliu' ),
'parent_item' => __( 'Categorie părinte' ),
'parent_item_colon' => __( 'Categorie părinte:' ),
'edit_item' => __( 'Editează categoria portofoliu' ),
'update_item' => __( 'Actualizează categoria portofoliu' ),
'add_new_item' => __( 'Adaugă categorie portofoliu' ),
'new_item_name' => __( 'Nouă categorie portofoliu' ),
'menu_name' => __( 'Categorii' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'rewrite' => true
);
register_taxonomy( 'portfolio_category', 'portfolio', $args );
}
add_action( 'init', 'taxonomies_portfolio', 0 );
Este posibil să creez 1 fișier șablon pentru a afișa toate elementele dintr-o singură categorie? Am încercat să creez un taxonomy.php
dar fără succes. Care este numele corect al șablonului pentru a funcționa?
Conform paginii Wordpress Codex despre Ierarhia șabloanelor, poți crea un fișier șablon cu numele taxonomy-portfolio_category.php
. WordPress va folosi acest fișier pentru a afișa arhiva pentru acea taxonomie. De asemenea, poți folosi taxonomy-portfolio_category-{term_name}.php
pentru a crea șabloane specifice termenilor din taxonomia ta.

Mulțumesc Manny, dar este posibil să folosești un singur șablon pentru toate categoriile în loc să creezi 3 șabloane pentru 3 categorii?

Da, prima parte din răspunsul meu: taxonomy-portfolio_category.php

Ok, mulțumesc Manny - dar din păcate nu a funcționat, mai este ceva de luat în considerare?

Am testat "taxonomy-portfolio_category.php", dar afișează archive.php în loc.

Nu este necesar să folosești șabloanele standard WordPress pentru a gestiona mai multe șabloane de taxonomii pentru același tip de postare personalizată.
Să presupunem că ai: 1) CPT portfolio
cu 1) taxonomia pcat
și 3) termeni 'sites', 'apps' și 'design' creați în această taxonomie (aici sunt afișate slug-urile).
Cazul 1: Poți dori să afișezi același șablon pentru oricare dintre aceste taxonomii pcat
. Folosește pur și simplu același șablon portfolio-single.php
cu codul care afișează orice înregistrare portfolio
într-un mod uniform.
Cazul 2: Acum, să zicem că vrei să afișezi un șablon diferit pentru fiecare înregistrare portfolio
CPT în funcție de termenul taxonomiei pcat
('sites', 'apps', 'design', 'whatever') atribuit acelei înregistrări.
Poți face acest lucru în continuare folosind același portfolio-single.php
cu șabloane parțiale adiționale pentru fiecare termen pcat
.
portfolio-single.php
trebuie să conțină acest cod:
<?php
get_header();
// Aici obții înregistrarea specifică a CPT-ului `portfolio`.
global $post;
// Obține array-ul de termeni ai taxonomiei 'pcat' atașați înregistrării
// și ia slug-ul primului termen (doar pentru concizie)
$txslug = get_the_terms($post, 'pcat')[0]->slug;
// Pregătește dinamic numele fișierului
$filename = get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
// Verifică dacă fișierul există și este accesibil
if (is_readable($filename)) {
// Cazul în care ai creat șablonul parțial pentru termenul specific `pcat`.
include get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
} else {
// Cazul pentru toți ceilalți termeni ai taxonomiei `pcat`.
include get_template_directory() . '/partials/_portfolio-single-other.php';
}
get_footer();
După cum vezi din codul de mai sus, va trebui să creezi șabloanele parțiale respective pentru fiecare termen al taxonomiei pcat
pe care îl atribui postărilor tale, care vor gestiona efectiv aspectul termenului taxonomiei.
Sau/și creează /partials/portfolio-single-other.php
pentru a gestiona toți termenii pe care dorești să arate într-un mod uniform.
Aceasta va menține fișierele temei tale bine organizate și, fără costuri suplimentare de cod, îți va permite să gestionezi în mod flexibil aspectul diferitelor termeni de taxonomie.
NB: Nu uita să redeclari global $post;
la începutul șabloanelor tale '/partials/_portfolio-single-'.$txslug.'.php'
. Vei avea acces la obiectul CPT pe care dorești să-l afișezi fără costuri suplimentare.
