Ниже представлен небольшой шорткод для WordPress, который позволяет публиковать отдельные сообщение блога по их ID, последние записи из блога из определенной рубрики, или изо все рубрик, дополнительную нумерацию страниц, дополнительную цитату или полностью весь контент с дополнительными метаданными. Добавляем первый сниппет в файл functions.php вашей темы для активации нового шорткода.
<?php /************* ШОРТКОДЫ ****************/ // function showBlogPosts( $atts ) { extract( shortcode_atts( array( // какие рубрики выводить, по-умолчанию = все. 'cat' => '', // количество записей 'num' => 5, 'p' => '', // Следующие переменные работаю как переключатель "on/off", 1 - разрешаем, 0 - запрещаем // выдержка записи. по-умолчанию = выдержка 'excerpt' => 1, // отображать метаданные или нет. по-умолчанию = да 'meta' => 1, 'meta2' => 1, //страничное разбиение. по-умолчанию = нет. Определяет, должна ли страницы разбиваться на части '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(); /* для кусочка с циклом использует свой loop.php, содержащий только форматирование записи. ** Смотрите "micrLoopPart.php" для списка всех настроек */ 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' ); ?>
Создаем новый файл шаблона под названием microLoopPart.php и добавляем следующий цикл микроформатирования
<article id="post-<?php the_ID();?>" <?php post_class($classes);?> ><!-- НАЧАЛО ЗАПИСИ --> <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=display:none";" <?php if($loopMeta == 0){ echo " }?> "> <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=display:none";" <?php if($loopMeta2 == 0){ echo " }?> ">Опубликовано в <?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>
Вставляем следующий шорткод в вашу запись блога для вывода списка записей с микроформатированием.
[blogPosts cat=3 excerpt=0 meta=1 meta1=0 num=2]