Șablon pentru taxonomie în tipuri de postări personalizate

16 feb. 2015, 18:46:21
Vizualizări: 27.4K
Voturi: 3

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?

6
Comentarii

Am creat un CPT portfolio și categoriile sale portfolio_categories, pot vedea toate portofoliile folosind archive-portfolio.php. Și puteți vedea elementele din categoria dorită folosind archive-portfolio_category.php, deoarece taxonomia dvs. este portfolio_category.

Mayeenul Islam Mayeenul Islam
16 feb. 2015 18:58:06

@MayeenulIslam Mulțumesc pentru răspuns. Am creat un "archive-portfolio_category.php" și un "taxonomy-portfolio_category.php" fără succes. Plugin-ul meu WhatTheFile continuă să returneze: archive.php

p2or p2or
16 feb. 2015 19:06:02

Funcția de înregistrare a taxonomiei ar trebui să arate astfel: register_taxonomy( 'portfolio_category', array( 'portfolio' ), $args ); iar parametrul rewrite poate fi astfel: 'rewrite' => array( 'slug' => 'portfolio-categories' ),

Mayeenul Islam Mayeenul Islam
16 feb. 2015 19:09:11

Îmi pare rău, în cazul tău rescrierea va fi: 'rewrite' => array( 'slug' => 'portfolio-category' ),, nu uita să încerci și archive-portfolio-category.php (cu cratimă). Pentru că eu nu am testat asta. :)

Mayeenul Islam Mayeenul Islam
16 feb. 2015 19:16:01

@MayeenulIslam Mulțumesc pentru efort - am testat codul tău, am actualizat Legături permanente, dar încă este la fel -> archive.php

p2or p2or
16 feb. 2015 19:19:16
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 2
8

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.

16 feb. 2015 18:52:38
Comentarii

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

p2or p2or
16 feb. 2015 18:58:23

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

Manny Fleurmond Manny Fleurmond
16 feb. 2015 19:08:21

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

p2or p2or
16 feb. 2015 19:13:17

Ce nu funcționează? Cum testezi?

Manny Fleurmond Manny Fleurmond
16 feb. 2015 19:20:13

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

p2or p2or
16 feb. 2015 19:21:23

Folosind ce URL?

Manny Fleurmond Manny Fleurmond
16 feb. 2015 19:22:08

Idee bună, eu folosesc: url/category/cărți/ Este greșit?

p2or p2or
16 feb. 2015 19:23:55

Pentru taxonomia ta, ar trebui să fie portfolio_category/cărți

Manny Fleurmond Manny Fleurmond
16 feb. 2015 19:26:50
Arată celelalte 3 comentarii
0

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.

23 ian. 2018 07:55:45