20+ самых популярных лайфхаков для циклов WordPress

Опубликовано: 2017-12-20

Цикл — это основной процесс в WordPress, поэтому он присутствует почти в каждом файле темы. По сути, это PHP-код, используемый платформой для отображения сообщений через файлы шаблонов темы. Другими словами, он огромен. На самом деле это критично, потому что без шлейфа сайт работать не будет.

Настройка этого набора невероятно мощных функций может расширить возможности вашего сайта WordPress. Например, вы можете изменить способ отображения сообщений на главной странице и отсортировать их по определенным параметрам. Учитывая, что цикл модифицировать проще всего, можно получить довольно впечатляющие и креативные хаки.

Давайте покажем вам 20+ лайфхаков с циклами, которые вы должны использовать прямо сейчас, чтобы это произошло без необходимости установки плагинов.

№1. Размещайте рекламу после первого поста

Как блогер, вы очень хорошо знаете, что реклама — один из лучших способов заработать деньги. Получение столь необходимых кликов от посетителей, безусловно, непростая задача, и многим блоггерам не нравится высокий рейтинг кликов. Размещение рекламы после первого поста может быть хорошим способом их увеличения, поэтому попробуйте эту простую настройку.

Замените свою петлю на приведенную ниже. Обратите внимание, туда нужно вставить код объявления:

<?php if (have_posts()) : ?>
<?php $count = 0; ?>
<?php while (have_posts()) : the_post(); ?>
<?php $count++; ?>
  <?php if ($count == 2) : ?>
          //Insert the code of an ad in this line
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <?php the_excerpt(); ?>
   <?php else : ?>
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <?php the_excerpt(); ?>
  <?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

№ 2. Отображение устаревших, но популярных сообщений годовой давности

Most Wanted WordPress Loop Hacks

Некоторые посты в вашем блоге, хотя и были созданы год назад, все еще могут быть популярны среди ваших читателей. Например, это может быть статья с практическими рекомендациями или какой-либо другой вечнозеленый контент. Чтобы эти посты оставались популярными, вы можете применить этот удобный лайфхак.

Вставьте этот код в файл single.php:

<?php
$current_day = date('j');
$last_year = date('Y')-1;
query_posts('day='.$current_day.'&year='.$last_year);
if (have_posts()):
    while (have_posts()) : the_post();
       the_title();
       the_excerpt();
    endwhile;
endif;
?>

№3. Показать пять последних прикрепленных сообщений в цикле

Most Wanted WordPress Loop Hacks

Функция по умолчанию позволяет прилепить один пост на главную страницу. Приведенный ниже хак размещает пять липких постов.

Многие блоггеры считают прикрепленные записи избранными, потому что они позволяют одной записи отображаться над другими. Если вы хотите создать свою собственную категорию «Выбор редакции», для этого есть лайфхак. Код ниже должен быть вставлен в любом месте темы для работы. Вы также можете изменить число, чтобы показывать меньше сообщений, заменив число в четвертой строке.

<?php
$sticky = get_option('sticky_posts');
rsort( $sticky );
$sticky = array_slice( $sticky, 0, 5);
query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );

if (have_posts()) :
    while (have_posts()) : the_post();
        the_title();
        the_excerpt();
    endwhile;
endif;

?>

№ 4. Список сообщений из определенной категории

Разделяйте посты из одной категории с помощью приведенного ниже лайфхака.

Если по какой-то причине вам нужно различать сообщения, относящиеся к одной и той же категории (например, статьи с практическими рекомендациями для авторов эссе), вставьте следующий код в файл цикла.

<?php foreach((get_the_category()) as $category) {
      	$thecat = $category->cat_ID . ' ';
    	query_posts('child_of='.$thecat);
 if (have_posts()) : while (have_posts()) : the_post();
    //Classic WP loop
 endwhile;endif;
?>

№ 5. Предоставьте список будущих сообщений

Most Wanted WordPress Loop Hacks

Если вы сообщите читателям о предстоящих публикациях, это может вызвать у них интерес и заставить их вернуться в ваш блог, чтобы прочитать их. Если это кажется вам отличной идеей, используйте приведенный ниже код, чтобы предоставить краткий список предстоящих сообщений на вашем сайте WordPress.

<?php query_posts('showposts=10&post_status=future'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <span class="datetime"><?php the_time('j. F Y'); ?></span></p>
<?php endwhile;
else: ?><p>No future events scheduled.</p>
<?php endif; ?>

№ 6. Получить сообщения, загруженные в определенную дату

Most Wanted WordPress Loop Hacks

Если вам часто трудно найти какие-либо сообщения в своей ленте, вы можете искать их с помощью цикла. Это возможно, вставив следующий код, который делает поиск очень простым. В частности, он извлекает записи, опубликованные между двумя датами, которые вы указываете сами.

<?php
  function filter_where($where = '') {
        $where .= " AND post_date >= '2012-08-19' AND post_date <= '2012-08-11'";
    return $where;
  }
add_filter('posts_where', 'filter_where');
query_posts($query_string);
while (have_posts()) :
      the_post();
      the_content();
endwhile;

?>

№ 7. Отображение цикла изображений

Галерея изображений на стартовой странице веб-сайта WordPress — хорошая идея, поскольку большинство людей ценят визуальные эффекты. Если ваши сообщения содержат ведущее изображение, приведенный ниже код извлечет их для демонстрации в цикле.

Вставьте следующий код в файл functions.php:

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){ //Determines a default image
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}

№8. Автоматически удалять сообщения, устанавливая дату истечения срока действия

Предположим, вы проводите конкурс, чтобы увеличить число читателей вашего блога. Когда конкурс закончен, вы публикуете результаты, а главное ответы, или подсказки, и подсказки к ним. Конечно, они не должны быть доступны для читателей навсегда, потому что вы можете провести еще один конкурс в будущем, верно?

Хороший способ удалить сообщения, даже если вы о них забыли, — это запланировать их, установив дату истечения срока действия. Цикл ниже заменяет существующий и делает именно это.

Не забудьте использовать формат мм/дд/гггг 00:00:00 для замены срока действия.

<?php
if (have_posts()) :
while (have_posts()) : the_post(); ?>
$expirationtime = get_post_custom_values('expiration');
if (is_array($expirationtime)) {
$expirestring = implode($expirationtime);
}
 
$secondsbetween = strtotime($expirestring)-time();
if ( $secondsbetween > 0 ) {
// For example…
the_title();
the_excerpt();
}
endwhile;
endif;
?>

№ 9. Отделяйте комментарии от трекбэков

Most Wanted WordPress Loop Hacks

На популярную запись в вашем блоге будут ссылаться многие другие сайты. Чтобы читатели могли удобно следить за обсуждением в разделе комментариев, вы должны разделить комментарии и обратные ссылки.

Все, что вам нужно сделать, это открыть comments.php и найти следующее:

foreach ($comments as $comment) : ?>
// Comments are displayed here
endforeach;

Нашли? Отлично, теперь замените его новым кодом:

<ul class="commentlist">
<?php //Displays comments only
foreach ($comments as $comment) : ?>
<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type == 'comment') { ?>
<li>//Comment code goes here</li>
<?php }
endforeach;
</ul>
 
<ul>
<?php //Displays trackbacks only
foreach ($comments as $comment) : ?>
<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type != 'comment') { ?>
<li><?php comment_author_link() ?></li>
<?php }
endforeach;
 
</ul> 

№10. Показать похожие сообщения

Most Wanted WordPress Loop Hacks

Отображение похожих постов — хороший способ увеличить читательскую аудиторию. Все, что вам нужно сделать для этого, это вставить специальный код в файл single.php.

<?php  	
  $backup = $post;  // backup the current object
  $tags = ks29so_get_post_tags($post->ID);
  $tagIDs = array();
  if ($tags) {
    $tagcount = count($tags);
    for ($i = 0; $i < $tagcount; $i++) {
      $tagIDs[$i] = $tags[$i]->term_id;
    }
    $args=array(
      'tag__in' => $tagIDs,
      'post__not_in' => array($post->ID),
      'showposts'=>5,
      'caller_get_posts'=>1
    );
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
      while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
      <?php endwhile;
    } else { ?>
      <h2>No related posts found!</h2>
    <?php }
  }
  $post = $backup;  // copy it back
  ks29so_reset_query(); // to use the original query again
?>

№ 11. Определите, как определенные сообщения отображаются на главной странице

Most Wanted WordPress Loop Hacks

Подавляющее большинство тем WordPress одинаково отображают все записи на стартовой странице. Однако, если вам это не нравится, вы можете изменить его и определить, какие из них должны отображаться полностью, а для каких достаточно только отрывков.

Найдите файл index.php и найдите там цикл. Его заменяет следующий код:

<?php if (have_posts()) :
    while (have_posts()) : the_post();
         $customField = get_post_custom_values("full");
         if (isset($customField[0])) {
             //Custom field is set, display a full post
              the_title();
              the_content();
         } else {
             // No custom field set, lets display an excerpt
              the_title();
              the_excerpt();
    endwhile;
endif;
?>

№ 12. Отображать рекламный контент над сообщениями на главной странице

Вставьте следующий код в файл index.php, чтобы добавить рекламный контент.

<div class="content-loop">

№ 13. Список всех авторов блога на странице

Most Wanted WordPress Loop Hacks

Просто вставьте этот код в любое место цикла, чтобы отобразить список всех авторов.

<ul>
<?php ks29so_list_authors('exclude_admin=0&optioncount=1&show_fullname=1&hide_empty=1'); ?>
</ul>

№ 14. Используйте настраиваемое поле для отображения имени приглашенного автора

Если вы используете гостевых авторов в своем блоге, вполне вероятно, что вы не создадите для них отдельную страницу. Почему бы просто не отображать их имя вместо этого?

Вставьте этот код в single.php, чтобы сделать это:

<?php $author = get_post_meta($post->ID, "guest-author", true);
if ($author != "") {
echo $author;
} else {
the_author();
} ?>

№ 15. Сделайте изображение обязательным требованием для публикации

Посты с изображениями часто набирают больше просмотров, чем без них. Откройте файл functions.php, чтобы сделать их обязательными.

add_action('save_post', 'wpds_check_thumbnail');
add_action('admin_notices', 'wpds_thumbnail_error');
 
function wpds_check_thumbnail( $post_id ) {
 // change to any custom post type 
  if( get_post_type($post_id) != 'post' )
      return;
 
  if ( ! has_post_thumbnail( $post_id ) ) {
   // set a transient to show the users an admin message
    set_transient( "has_post_thumbnail", "no" );
   // unhook this function so it doesn't loop infinitely
    remove_action('save_post', 'wpds_check_thumbnail');
   // update the post set it to draft
    ks29so_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
 
    add_action('save_post', 'wpds_check_thumbnail');
  } else {
    delete_transient( "has_post_thumbnail" );
  }
}
 
function wpds_thumbnail_error() {
 // check if the transient is set, and display the error message
  if ( get_transient( "has_post_thumbnail" ) == "no" ) {
    echo "<div class='error'><p><strong>You must add a Featured Image before publishing this. Don't panic, your post is saved.</strong></p></div>";
    delete_transient( "has_post_thumbnail" );
  }
}

№ 16. Перенаправление на определенную страницу после регистрации

Откройте файл functions.php и добавьте приведенный ниже код.

function __my_registration_redirect(){
    return home_url( '/my-page' );
}
add_filter( 'registration_redirect', '__my_registration_redirect' );

#17. Insert Ads in Post
Use this code in your functions.php file to wrap ads in a post in any place you want.
Hack
function googleadsense($content){
  $adsensecode = 'Your Ad Codes Here';
  $pattern = '<!-googlead->';
  $content = str_replace($pattern, $adsensecode, $content);
  return $content;      
}
add_filter('the_content', 'googleadsense');

№ 18. Используйте шорткоды для показа рекламы

Выберите место, куда вы хотите вставить объявление, и вставьте следующий код в functions.php.

function showads() {
    return '
AD’S CODE HERE
';
}
add_shortcode('adsense', 'showads');

№ 19. Показать наиболее комментируемые сообщения

Most Wanted WordPress Loop Hacks

Добавьте следующий код в файл functions.php, чтобы показать сообщения с наибольшим количеством комментариев.

function wpb_most_commented_posts() {
ob_start();?>
<ul class="most-commented">
<?php
$query = new
WP_Query('orderby=comment_count&posts_per_page=10');
while($query->have_posts()) : $query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> <span class="wpb-comment-count"><?php comments_popup_link('No Comments;', '1 Comment', '% Comments'); ?></span></li>
<?php endwhile; ?>
</ul>
<?php// Turn off output buffering
$output = ob_get_clean();
return $output; }
add_shortcode('wpb_most_commented', 'wpb_most_commented_posts');
add_filter('widget_text', 'do_shortcode');

№ 20. Включить поддержку избранных изображений

Подавляющее большинство тем WordPress поддерживают избранные изображения, но если у вас нет, вы можете включить их, вставив это в файл functions.php.

add_theme_support( 'post-thumbnails' );

№ 21. Показать последние комментарии

Most Wanted WordPress Loop Hacks

Используйте этот код в любом месте цикла, чтобы отобразить пять последних комментариев.

<?php
$query = "SELECT * from $wpdb->comments WHERE comment_approved= '1'
ORDER BY comment_date DESC LIMIT 0 ,5";
$comments = $wpdb->get_results($query);
if ($comments) {
echo '<ul>';
foreach ($comments as $comment) {
$url = '<a href="'. get_permalink($comment->comment_post_ID).'#comment-'.$comment->comment_ID .'" title="'.$comment->comment_author .' | '.get_the_title($comment->comment_post_ID).'">';
echo '<li>';
echo '<div class="img">';
echo $url;
echo get_avatar( $comment->comment_author_email, $img_w);
echo '</a></div>';
echo '<div class="txt">Par: ';
echo $url;
echo $comment->comment_author;
echo '</a></div>';
echo '</li>';
}
echo '</ul>';
}
?>

Готовы взломать?

Используйте эти удобные настройки и улучшите функциональность своего сайта WordPress!