X

Shortcode con Loop Formattato Micro, Meta, Categoria, Paginazione

Snippet di IsItWP

L'utilizzo di uno shortcode di WordPress ti consente di pubblicare singoli post del blog in base all'ID, all'ultimo numero di post del blog di una determinata categoria o di tutte le categorie, paginazione opzionale, riepilogo opzionale o contenuto completo e metadati opzionali.

Istruzioni: Aggiungi il seguente codice al file functions.php del tuo tema WordPress per abilitare il nuovo shortcode.

<?php
/************* SHORTCODES ****************/
// 
function showBlogPosts( $atts ) {
	extract( shortcode_atts( array(
	// what categories to show, default = all. 
		'cat' => '',
	// number of posts
		'num' => 5,
		'p' => '',
	// The following variables work on an "on/off" switch, 1 to allow, 0 to disallow
	// excerpt or content. default = excerpt
		'excerpt' => 1,
	// show meta or not. default = yes
		'meta' => 1,
		'meta2' => 1,

	//paged. default on no. Determines if page should be paginated or not
		'pnavi' => 0
	), $atts ) );
	global $loopMeta, $loopExcerpt, $loopMeta2;
	$loopMeta = $meta;
	$loopExcerpt = $excerpt;
	$loopMeta2 = $meta2;
	if ($p != ''){
	$posts_per_page = '';	
	}
	
 wp_reset_query();
global $paged;
$args = array( 'posts_per_page' => $num, 'cat'=> $cat, 'p' => $p );
if($pnavi == 1){
$args['paged'] = get_query_var('page');
}
query_posts($args );
 while ( have_posts() ) : the_post();
/* for the loop part, use your own loop.php that contains only the post format. 
** See my "micrLoopPart.php" to see how all the options play out
*/
include(locate_template('microLoopPart.php'));
   endwhile; 

if($pnavi == 1){
echo'<div id="blogNav">';
posts_nav_link( ' ', '&raquo;', '&laquo;' );
echo '</div>';
}
 wp_reset_query();
}
add_shortcode( 'blogPosts', 'showBlogPosts' );
?>

Ora, crea un nuovo file di modello chiamato microLoopPart.php nella tua cartella principale e aggiungi il seguente loop formattato in micro.

<article id="post-<?php the_ID();?>" <?php post_class($classes);?> ><!-- START OF POST -->
      
      <h1 class="entry-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>" class="url">
        <?php the_title(); ?>
        </a></h1>
      <span class="meta vcard" style=" <?php if($loopMeta == 0){ echo "display:none"; }?> ">
      <time class="updated" datetime="<?php

$postDate = get_the_date('c');

$postDate2 = get_the_date('d.m.Y');

echo $postDate ?>" pubdate> <?php echo $postDate2; ?></time>
      | <span class="byline fn author">
      <?php the_author_posts_link(); ?>
      </span> | <a href="mailto:<?php the_author_meta('email'); ?>" class="email author">email</a> |
      <?php the_category(', '); ?>
      </span></span>

      <div class="postContent entry-content">
         <?php 
		if($loopExcerpt == 0){
		the_content();
		}
		else{
			if ( has_post_thumbnail() ) {
			 the_post_thumbnail('thumbnail', array('class' => 'alignleft')); 
	  		 
			}
		the_excerpt();
	   	echo '<div class="clearfix"></div>';
		}
		?>
        <p class="postmetadata" style=" <?php if($loopMeta2 == 0){ echo "display:none"; }?> ">Posted in
          <?php the_category(', '); ?>
          <br />
          <?php the_tags(); ?>
          <br />
          Source: <span class="vcard"><span class="source-org copyright">
          <?php bloginfo('name'); ?>
          </span></span></p>
      </div>
    </article>

Infine, devi aggiungere il seguente shortcode all'interno dei tuoi post del blog per visualizzare un elenco di post formattato in micro.

[blogPosts cat=3 excerpt=0 meta=1 meta1=0 num=2]

Potrebbe interessarti anche verificare se lo shortcode esiste già.

Commenti   Lascia una risposta

  1. Errore di analisi: errore di sintassi, inatteso '<' in C:xampp3htdocsmrcwp-contentthemesmrcmicroLoopPart.php alla riga 6

  2. Ciao,

    Apprezzo molto il tuo codice, ma come ha detto John, la paginazione non funziona. Mostrerà il link, ma nelle pagine successive (come la pagina 2) mostra ancora il contenuto della pagina uno. Qualche idea?

    Saluti
    Michael

  3. Grazie per questo! – Far apparire the_excerpt per i post interrogati personalizzati nella barra laterale su *single.php* (stranamente, ha funzionato su tutte le altre pagine) mi stava facendo impazzire.
    Ho provato a creare il mio shortcode ma non sono riuscito a farlo funzionare. Questo è stato davvero utile e ha risolto il problema...

    Non so se sia un bug in WP 3.3, ma resettare le query, riavvolgere, provare tre diversi tipi di query – da wp_query a get_posts – semplicemente non ha funzionato su single.php… stavo solo cercando di creare un loop al di fuori del loop principale – e tutti hanno funzionato su *ogni pagina* tranne che sui singoli post. Così frustrante!

    grazie ancora!

  4. Questo è un ottimo contributo . Grazie. Ho però un problema con il mio tema. Tutto sembra funzionare tranne quando aggiungo la paginazione, il link c'è per le pagine e va a quelle pagine, ma ogni pagina mostra gli ultimi post (in questo esempio, gli ultimi 2) Questo è lo shortcode che ho usato. Ho copiato il codice sopra senza modifiche

    [blogPosts
    cat=3 excerpt=0 meta=1 meta1=0 num=2 pnavi=1]
    Qualche idea? Uso WP 3.3.1 

    Grazie

Aggiungi un commento

Siamo lieti che tu abbia scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra normativa sulla privacy e tutti i link sono nofollow. NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.

Checklist per il lancio di WordPress

La Guida Definitiva per il Lancio di WordPress

Abbiamo raccolto tutti gli elementi essenziali della checklist per il lancio del tuo prossimo sito web WordPress in un comodo ebook.
Sì, Inviami l'eBook Gratuito!