- Home
- Categorie
- Coding e Sistemistica
- WordPress
- Mostrare elenco post con tag comuni
-
Mostrare elenco post con tag comuni
Ciao a tutti sto creando un sito di ricette con ricette vegetariane, normali e vegane e vorrei un vostro aiuto.
Mi spiego. Nel sito avrò principalemente quattro macro categorie di ricette:- Ricette Normali
- Ricette Vegetariane
- Ricette Vegane
- Ricette per microonde
- Ricette senza zucchero
Queste macroclassi hanno poi delle microcategorie al loro interno che potrebbero essere suddivise così:
-
Ricette Normali
- Primi
- Secondi
- Dolci etc -
Ricette Vegetariane
- Primi vegetariani
- Secondi vegetariani
- Dolci vegetariani etc -
Ricette Vegane
- Primi vegani
- Secondi vegani
- Dolci vegani etc
- Primi vegani
-
Ricette senza zucchero
- Primi senza zucchero
- Secondi senza zucchero
- Dolci senza zucchero etc
- Primi senza zucchero
-
Ricette microonde
- Primi vegani + Primi vegetariani + Primi normali
- Secondi vegani + Secondi vegetariani + Secondi normali
- Dolci vegani + Dolci vegetariani + Dolci normali
(La parte ricette a microonde deve mostrare tutti i primi, i secondi e i dolci che abbiano la caratteristica "cottura microonde").
Non posso usare le categorie perchè avrei dei doppioni. Ossia, ci sono diverse ricette che sono vegetariane e contemporaneamente senza zucchero. Se usassi le categorie avrei dei doppioni con grossi problemi lato seo e facilità nella navigazione.
Avevo pensato, per ricette vegetariane, vegane e senza zucchero, di usare i tag (es primo vegano, primo vegano senza zucchero etc). Come posso poi creare una sezione del mio sito denominata Primi Vegani dove vengono mostrati tutti i post con il tag "primo vegano"?
E allo stesso tempo una sezione chiamata "Primi senza zucchero" che mostri i post con il tag "primo vegano senza zucchero"? Ovviamente i post devono essere mostrati come una classica paagina contenente i post di una determinata categoria.
E lo stesso, avevo pensato per cottura a microonde. Ma non so...
Avevo pensato usanto una pagina archivio per un determinato tag (fare una pagina archivio primi_vegetariani.php, una per primi_vegani.php etc).
Ho visto questa guida skifatv.ilbello.com/?p=29 che dovrebbe fare il mio caso, ma non mi funziona. Il mio archive.php è così ```
<?php get_header(); ?><?php if (have_posts()) : $post = $posts[0]; // Hack ?> <?php dt_breadcrumb(); ?> <div class="maincol"> <!-- # # display archive headers # // --> <?php dt_archive_header(); ?> <!-- # # the query form & result wrapper # // --> <?php include TEMPLATEPATH.'/QueryForm.php'; ?> <div id="result"></div> <a href="#loadmore" class="loadmore"><?php _e('Load more news...','news'); ?></a><div class="clear"></div> </div> <?php get_sidebar(); ?><div class="clear"></div> <?php else : ?> <?php endif; ?>
<?php get_footer(); ?>
Ma non capisco come modificarlo. Per farlo diventare una template page devo inserire all'inizio il seguente codice ``` <?php /* Template Name: name */ ?>
Devo poi inserire il codice ```
?php query_posts('tag=tag_name'); ?>Ho provato a creare un php così (sostituendo tag_name con il tag che voglio far vedere, ma non mi funziona ``` <?php /* Template Name: test */ ?> <?php get_header(); ?> <?php if (have_posts()) : $post = $posts[0]; // Hack ?> <?php dt_breadcrumb(); ?> <?php query_posts('tag=tag_name'); ?> <div class="maincol"> <!-- # # display archive headers # // --> <?php dt_archive_header(); ?> <!-- # # the query form & result wrapper # // --> <?php include TEMPLATEPATH.'/QueryForm.php'; ?> <div id="result"></div> <a href="#loadmore" class="loadmore"><?php _e('Load more news...','news'); ?></a><div class="clear"></div> </div> <?php get_sidebar(); ?><div class="clear"></div> <?php else : ?> <?php endif; ?> <?php get_footer(); ?>
-
Credo che un approccio del genere possa comunque generare dei contenuti duplicati, alla fine ti sarà molto difficile generare delle regole che non permettano in modo assoluto di non avere contenuti duplicati.
Magari mi sbaglio, anche perché la gestione dei contenuti duplicati non è assolutamente il mio forte, ma ritengo che potresti utilizzare uno dei moltissimi plugin SEO per aumentare la tua ottimizzazione sulle pagine singole e rimuovere l'indicizzazione all'interno degli archivi della categoria e dei tag.
In questo modo i tuoi collegamenti saranno sempre presenti all'interno dei tuoi siti, ma non verranno indicizzati dai motori di ricerca evitando di creare dei contenuti duplicati per i quali verremmo penalizzati dai motori di ricerca.
-
Ciao "AndMore", in effetti hai ragione. Non ci avevo pensato. In questi termini potrei utilizzare il plugin "Platinum SEO" che so avere questo tipo di impostazioni.
Ora però ho sempre il problema di risolvere il discorso codice. Ho trovato quest'altro articolo che riporta tutti i parametri wordpress.altervista.org/mostrare-liste-di-post-in-wordpress-con-la-funzione-wp_query-filtrando-per-autore-categoria-tag-o-post/ ma ho sempre difficoltà nel creare la mia pagina.
Partendo dal mio file .php della pagina di archio (che ho postato precedentemente), dove devo aggiungere i vari campi?? Ho provato ma mi danno costantemente errori.
-
..ragazzi ho provato di tutto, non so più dove cercare...voi ne sapete nulla???
-
Prova a mettere la funzione [PHP]<?php query_posts('tag=tag_name'); ?> al posto di <?php dt_archive_header(); ?>[/PHP]
-
Mmm, grazie della risposta "elmanisero" ma putroppo non va..ho sostituito come mi hai detto, ottenendo questo codice:
<?php /* Template Name: Primi Vegani */ ?> <?php get_header(); ?> <?php if (have_posts()) : $post = $posts[0]; // Hack ?> <?php dt_breadcrumb(); ?> <?php query_posts('tag=primi vegani'); ?> <div class="maincol"> <!-- # # display archive headers # // --> <?php query_posts('tag=primi vegani'); ?> <!-- # # the query form & result wrapper # // --> <?php include TEMPLATEPATH.'/QueryForm.php'; ?> <div id="result"></div> <a href="#loadmore" class="loadmore"><?php _e('Load more news...','news'); ?></a><div class="clear"></div> </div> <?php get_sidebar(); ?><div class="clear"></div> <?php else : ?> <?php endif; ?> <?php get_footer(); ?>
ma mi viene fuori una pagina, con la grafica del theme...e nulla altro
-
Davo per scontato che togliessi la prima query, ora ne hai due uguali.
Invece del codice della pagina degli archivi perchè non posti il codice della pagina del blog? Che tema è quello che usi?
-
Elmanisero, grazie ancora per la tua risposta, sto usando il theme "Newsworld" deluxethemes.com/newsworld/
Ho provato a rifare il tutto, togliendo la prima query..ma putroppo non cambia nulla.
All'interno del mio theme ho questi file .php (archive.php, ad.php, comments.php, footer.php, function.php, GetFilteredNews.php, GetResult.php, header.php, index.php, ModifyData.php, myprofile.php, newspulse.php, NewUser.php, page.php, QueryForm.php, search.php, sidebar.php, singup.php, single.php, thumb.php, thumbopen.php)...teoricamente hai bisogno del page.php?
<?php get_header(); ?> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php dt_breadcrumb(); ?> <div class="maincol"> <div class="post"> <h1><?php the_title(); ?></h1> <div class="entry"> <?php dt_the_content(); ?> </div> <?php dt_facebook('before=<div class="post_fbox">&after=</div>&width=665&height=180&fans=11'); ?> </div> <?php comments_template('/comments.php', true); ?> <!-- <?php trackback_rdf(); ?> --> </div> <?php get_sidebar(); ?><div class="clear"></div> <?php endwhile; ?> <?php else : ?> <?php endif; ?> <?php get_footer(); ?>
-
Non saprei bisognerebbe avere il tema che è purtroppo premium e fare delle prove.
Prova con questo template.
[php]<?php
/*
Template Name: Nome Template
*/
?>
<?php get_header(); ?>
<div class="maincol">
<?php
// The Query
$args = array(
'tag' => 'nome_tag',
);
$query = new WP_Query($args);
// The Loop
while( $query->have_posts() ) : $query->the_post();
echo '<li>';
echo '<div class="post">';
the_title();
echo '</div>';
echo '<div class="entry">';
the_excerpt();
echo '</div>';
echo '</li>';
endwhile;
wp_reset_postdata();
?>
</div><?php get_sidebar(); ?><div class="clear"></div> <?php endwhile; ?> <?php else : ?> <?php endif; ?>
<?php get_footer(); ?>[/php]
-
..gentilissimo, putroppo mi da un'errore alla riga 31, con ```
<?php endwhile; ?>mm si, è un template premium..non so se si può, ma posso scrivere i codici degli altri php (o allegarli)...se può servire a qualcosa....
-
..allora, provando a fare il percorso all'incontrario ho "ottenuto" quello che dovrebbe essere il codice. Mi spiego. Dato che quello che voglio ottenere è lo stesso risultato che si ottiene cliccando su un preciso tag del widget "tag cloud" (non posso però creare una pagina con quel link perchè mi compare, come intestazione e come link, la parola "Posts Tagged "nome_tag"), ho provato a fare il percorso e, analizzando il codice trovo questo
(eliminando la parte dell'header, che, non credo serva riportarvi e che basta richiamare con la fuzione ```
<?php get_header(); ?><div class="breadcrumb"><p><a href="localhost/ricette" title="Home">Home</a> » Posts Tagged ?ricette vegetariane?</p></div> <div class="maincol"> <!-- # # display archive headers # // --> <div class="archiveheader"> <h1>Posts Tagged ?ricette pentole amc?</h1> </div> <!-- # # the query form & result wrapper # // -->
successivamente mi trovo
<div class="pageoptions"><div class="alignleft">
e tutto il resto fino al footer che credo sia sufficente richiamare con questo codice
<?php include TEMPLATEPATH.'/QueryForm.php'; ?>
<div id="result"></div>
<a href="#loadmore" class="loadmore"><?php _e('Load more news...','news'); ?></a><div class="clear"></div></div> <?php get_sidebar(); ?><div class="clear"></div> <?php else : ?> <?php endif; ?>
<?php get_footer(); ?>
..provato..qualsiasi prova io faccia...mi da sempre l'errore alla line di corrispondenza di ``` <?php endwhile; ?>
Parse error: syntax error, unexpected T_ELSE in C:\xampp\htdocs\ricette\wp-content\themes\newsworld\ricette_vegetariane.php on line 35