Utilizarea unui shortcode WordPress vă permite să publicați postări individuale de blog bazate pe ID, numărul cel mai recent de postări dintr-o anumită categorie sau toate categoriile, paginare opțională, rezumat opțional sau conținut complet afișat și meta opțional.
Instrucțiuni: Adăugați următorul cod în functions.php al temei dvs. WordPress pentru a activa noul 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( ' ', '»', '«' );
echo '</div>';
}
wp_reset_query();
}
add_shortcode( 'blogPosts', 'showBlogPosts' );
?>
Acum, creați un nou fișier șablon numit microLoopPart.php în folderul rădăcină și adăugați următorul buclă formatată 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>
În cele din urmă, trebuie să adăugați următorul shortcode în postările dvs. de blog pentru a afișa o listă de postări formatată micro.
[blogPosts cat=3 excerpt=0 meta=1 meta1=0 num=2]
De asemenea, s-ar putea să vă placă verificarea dacă shortcode-ul există deja.
Eroare de analiză: eroare de sintaxă, neașteptat „<' în C:xampp3htdocsmrcwp-contentthemesmrcmicroLoopPart.php pe linia 6
Salut,
Îmi place codul dvs., dar așa cum a spus John, paginarea nu funcționează. Va afișa linkul, dar pe paginile următoare (cum ar fi pagina 2) încă afișează conținutul paginii unu. Aveți vreo idee?
Cu stimă
Michael
Mulțumesc pentru asta! – Afișarea _excerpt pentru postările interogate personalizate în bara laterală pe *single.php* (în mod ciudat, a funcționat pe toate celelalte pagini) mă omora.
Am încercat să-mi creez propriul shortcode, dar nu am reușit să-l fac să funcționeze. Acesta a fost foarte util și a rezolvat problema…
Nu știu dacă este un bug în WP 3.3, dar resetarea interogărilor, reîntoarcerea, încercarea a trei tipuri diferite de interogări – de la wp_query la get_posts pur și simplu nu a funcționat pe single.php… încercam doar să creez o buclă în afara buclei principale – și toate au funcționat pe *fiecare pagină* cu excepția postărilor unice. Atât de frustrant!
mulțumesc din nou!
Aceasta este o contribuție grozavă . Vă mulțumesc. Am o problemă totuși cu tema mea. Totul pare să funcționeze, cu excepția cazului în care adaug paginarea, linkul este acolo pentru pagini și duce la acele pagini, dar fiecare pagină afișează cele mai recente postări (în acest exemplu, cele mai recente 2) Acesta este shortcode-ul pe care l-am folosit. Am copiat codul de mai sus fără modificări
[blogPosts
cat=3 excerpt=0 meta=1 meta1=0 num=2 pnavi=1]
Aveți vreo idee? Folosesc WP 3.3.1
Mulțumesc