Cum să creezi tag.php
Cum pot crea un șablon tag.php care să funcționeze pentru fiecare articol care conține etichete?
Am creat câteva etichete precum = Mâncare, Băutură și Fructe
postarea 1 are etichetele Mâncare și Băutură
postarea 2 are etichetele Mâncare și Fructe
Cum pot crea o pagină unică pentru aceste postări cu etichete?
Codul meu arată astfel, dar nu afișează nimic.
function get_tags_post($tag_name){
$original_query = $wp_query;
$wp_query = null;
$brand_name= $tag_name;
$args=array(
'posts_per_page'=>5, // Numărul de postări per pagină
'tag' => $brand_name
);
$wp_query = new WP_Query( $args );
if ( have_posts() ) : while (have_posts()) : the_post();
echo '<li>';
single_tag_title();
echo '</li>';
endwhile; endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();
}
Vă rog, dacă cineva știe care parte din cod este greșită, să-mi spună.
Din păcate, tot codul tău este greșit. Ceea ce faci este același lucru ca query_posts
, care nu ar trebui niciodată folosit. De asemenea, nu înlocui niciodată interogarea principală pe nicio pagină de arhivă sau pe pagina principală cu o interogare personalizată.
Pentru a crea o pagină de etichete, pur și simplu fă o copie a fișierului tău index.php și redenumește-l în tag.php. Iată o copie a temei încorporate, tag.php din twentyfourteen, doar ca să-ți faci o idee.
<?php
/**
* Șablonul pentru afișarea paginilor de Etichete
*
* Folosit pentru afișarea paginilor de tip arhivă pentru postări într-o etichetă.
*
* @link http://codex.wordpress.org/Template_Hierarchy
*
* @package WordPress
* @subpackage Twenty_Fourteen
* @since Twenty Fourteen 1.0
*/
get_header(); ?>
<section id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php if ( have_posts() ) : ?>
<header class="archive-header">
<h1 class="archive-title"><?php printf( __( 'Arhive etichetă: %s', 'pietergoosen' ), single_tag_title( '', false ) ); ?></h1>
<?php
// Afișează o descriere opțională a termenului.
$term_description = term_description();
if ( ! empty( $term_description ) ) :
printf( '<div class="taxonomy-description">%s</div>', $term_description );
endif;
?>
</header><!-- .archive-header -->
<?php
$counter = 1; //Începe contorul pentru layout-ul coloanelor de postări
// Începe Bucla.
while ( have_posts() ) : the_post();
?>
<div class="entry-column<?php echo ( $counter%2 ? ' left' : ' right' ); ?>">
<?php get_template_part( 'content', get_post_format() ); ?>
</div>
<?php
$counter++; //Actualizează contorul
endwhile;
pietergoosen_pagination();
else :
// Dacă nu există conținut, include șablonul "Nicio postare găsită".
get_template_part( 'content', 'none' );
endif;
?>
</div><!-- #content -->
</section><!-- #primary -->
<?php
get_sidebar( 'content' );
get_footer();
Consultă și următoarele linkuri:
EDITARE
Doar pentru a comenta codul tău, ar trebui să indentăm corect codul. În forma actuală, codul tău este greu de citit. De asemenea, este dificil de depanat.
Citește mai multe informații la standarde-de-cod/php/#indentare

Dacă dorești să utilizezi propriul tău wp_query (ceea ce, apropo, nu este absolut deloc greșit și poate fi folosit dacă știi ce faci și folosești măsuri de siguranță - cum ar fi să încerci să nu folosești $_GET prea des și, dacă o faci, să încerci să folosești strip_tags() sau să convertești la (int) înainte dacă vrei să transmiți doar un număr).
Poți interoga arhivele cu etichete în index.php (dacă vrei să ai un singur șablon universal pentru postările standard WordPress) sau prin crearea unui fișier tags.php în directorul rădăcină al șablonului principal (unde se află index.php și alte fișiere de șablon), care este exact la fel ca index.php dar se activează când accesezi pagini de genul: www.webage.com/tag/nume-eticheta
Mai întâi, folosește get_queried_object(); pentru a obține obiectul curent. Este bine să-l salvezi într-o variabilă pentru a economisi transferul:
$qObject = get_queried_object();
Dacă lucrezi pe index.php, este o bună practică să creezi o variabilă pentru a distinge dacă este o arhivă de etichete sau nu, astfel încât să o poți folosi mai târziu:
$isArchiveTag = (($qObject->taxonomy == 'post_tag')?true:false);
Nu trebuie să o creezi dacă lucrezi pe tag.php.
Acum, dacă folosești wp_query, ar trebui să arate astfel:
$postArgs = array(
'post_type' => 'post',
'showposts' => -1,
'post_status' => 'publish',
'parent' => 0,
'hide_empty' => true,
'orderby' => 'date',
'order' => 'DESC',
'tag' => (($isArchiveTag)?$qObject->slug:'')
);
$query = new WP_Query($postArgs);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$currentPost = get_post(); // dacă vrei să declari o variabilă pentru a stoca datele postării
//introdu codul tău aici
}
}
wp_reset_postdata();
Pentru a obține titlul etichetei active, poți folosi
single_tag_title( '', false );
sau
$qObject->name;
Pentru a obține toate etichetele ca obiect wp și a le salva într-o variabilă, folosește
$tags = get_terms('post_tag');
Distracție plăcută :)
