X

Shortcode mit Mikroformatiertem Loop, Meta, Kategorie, Paginierung

Schnipsel von IsItWP

Die Verwendung eines WordPress-Shortcodes ermöglicht Ihnen das Posten einzelner Blogbeiträge basierend auf ID, der neuesten Anzahl von Blogbeiträgen aus einer bestimmten Kategorie oder allen Kategorien, optionaler Paginierung, optionaler Anzeige von Auszügen oder vollständigem Inhalt und optionalen Metadaten.

Anleitung: Fügen Sie den folgenden Code zu functions.php Ihres WordPress-Themes hinzu, um den neuen Shortcode zu aktivieren.

<?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' );
?>

Erstellen Sie nun eine neue Vorlagendatei namens microLoopPart.php in Ihrem Stammverzeichnis und fügen Sie die folgende Mikro-formatierte Schleife hinzu.

<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>

Zuletzt müssen Sie den folgenden Shortcode in Ihre Blogbeiträge einfügen, um eine Mikro-formatierte Liste von Beiträgen anzuzeigen.

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

Sie können auch prüfen, ob ein Shortcode bereits existiert.

Kommentare   Hinterlasse eine Antwort

  1. Parse error: syntax error, unexpected ‘<' in C:xampp3htdocsmrcwp-contentthemesmrcmicroLoopPart.php on line 6

  2. Hallo,

    Ich mag Ihren Code wirklich, aber wie John sagte, funktioniert die Paginierung nicht. Es wird der Link angezeigt, aber auf den nächsten Seiten (wie Seite 2) wird immer noch der Inhalt von Seite eins angezeigt. Irgendeine Idee?

    Mit freundlichen Grüßen
    Michael

  3. Vielen Dank dafür! – Es hat mich um den Verstand gebracht, den_excerpt für benutzerdefinierte Abfragebeiträge in der Seitenleiste auf *single.php* anzuzeigen (seltsamerweise funktionierte es auf allen anderen Seiten).
    Ich habe versucht, meinen eigenen Shortcode zu erstellen, aber ich konnte ihn nicht ganz zum Laufen bringen. Das war wirklich hilfreich und hat das Problem behoben ...

    Ich weiß nicht, ob es ein Bug in WP 3.3 ist, aber das Zurücksetzen von Abfragen, das Zurückspulen, das Ausprobieren von drei verschiedenen Abfragetypen – von wp_query bis get_posts hat auf single.php einfach nicht funktioniert... ich habe nur versucht, eine Schleife außerhalb der Hauptschleife zu erstellen – und sie funktionierten auf *jeder Seite* außer auf einzelnen Beiträgen. So frustrierend!

    Danke nochmal!

  4. Das ist ein großartiger  Beitrag. Vielen Dank. Ich habe jedoch ein Problem mit meinem Theme. Alles scheint zu funktionieren, außer wenn ich die Paginierung hinzufüge, der Link für die Seiten ist da und er geht zu diesen Seiten, aber jede Seite zeigt die neuesten Beiträge (in diesem Beispiel die neuesten 2). Das ist der Shortcode, den ich verwendet habe. Ich habe den obigen Code kopiert, ohne etwas zu ändern.

    [blogPosts
    cat=3 excerpt=0 meta=1 meta1=0 num=2 pnavi=1]
    Irgendwelche Ideen? Mit WP 3.3.1 

    Danke

Kommentar hinzufügen

Wir freuen uns, dass Sie einen Kommentar hinterlassen haben. Bitte beachten Sie, dass alle Kommentare gemäß unserer Datenschutzrichtlinie moderiert werden und alle Links nofollow sind. Verwenden Sie KEINE Schlüsselwörter im Namensfeld. Lassen Sie uns ein persönliches und bedeutungsvolles Gespräch führen.

WordPress Launch Checkliste

Die ultimative Checkliste für den Start von WordPress

Wir haben alle wichtigen Checklistenpunkte für den Start Ihrer nächsten WordPress-Website in einem praktischen E-Book zusammengefasst.
Ja, senden Sie mir das kostenlose E-Book!