20+ Most Wanted WordPress Loop Hacks

Opublikowany: 2017-12-20

Pętla jest głównym procesem w WordPressie, więc można ją znaleźć prawie w każdym pliku motywu. Zasadniczo jest to kod PHP używany przez platformę do wyświetlania postów za pomocą plików szablonów motywu. Innymi słowy, jest ogromny. W rzeczywistości jest to krytyczne, ponieważ strona nie będzie działać bez pętli.

Modyfikowanie tego zestawu niesamowicie potężnych funkcji może zwiększyć możliwości Twojej witryny WordPress. Na przykład możesz zmienić sposób wyświetlania postów na stronie głównej i uporządkować je według określonych parametrów. Biorąc pod uwagę, że pętla jest najłatwiejsza do modyfikacji, można uzyskać imponujące i kreatywne hacki.

Pokażmy Ci ponad 20 pętli hacków, których powinieneś teraz użyć, aby to się stało, bez konieczności instalowania wtyczek.

#1. Umieść reklamę po pierwszym poście

Jako bloger doskonale wiesz, że reklamy są jednym z najlepszych sposobów na zarabianie pieniędzy. Uzyskanie tak bardzo potrzebnych kliknięć od odwiedzających jest z pewnością trudne, a wielu blogerów nie cieszy się wysokimi współczynnikami klikalności. Umieszczanie reklam po pierwszym poście może być dobrym sposobem na ich zwiększenie, więc wypróbuj tę prostą poprawkę.

Zastąp swoją pętlę tą poniżej. Zwróć uwagę, ponieważ musisz tam wkleić kod reklamy:

<?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. Wyświetlaj przestarzałe, ale popularne roczne posty

Most Wanted WordPress Loop Hacks

Niektóre posty na Twoim blogu, mimo że zostały utworzone rok temu, mogą nadal być popularne wśród Twoich czytelników. Na przykład może to być artykuł instruktażowy lub inny rodzaj wiecznie zielonej treści. Aby upewnić się, że te posty pozostaną popularne, możesz zastosować ten przydatny hack.

Wstaw ten kod do pliku 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. Wyświetl pięć ostatnich przyklejonych postów w pętli

Most Wanted WordPress Loop Hacks

Domyślna funkcja pozwala przykleić jeden post na pierwszą stronę. Poniższy hack umieszcza pięć przyklejonych postów.

Wielu blogerów uważa posty przyklejone za posty polecane, ponieważ umożliwiają wyświetlanie wpisu nad innymi. Jeśli chcesz stworzyć własną kategorię „Wybory redaktora”, jest na to hack. Poniższy kod musi być wstawiony w dowolnym miejscu motywu, aby działał. Możesz również zmienić numer, aby wyświetlać mniej postów, zastępując numer w czwartym wierszu.

<?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. Lista postów z określonej kategorii

Odróżnij posty z tej samej kategorii za pomocą poniższego hacka.

Jeśli z jakiegoś powodu musisz rozróżnić posty należące do tej samej kategorii (na przykład artykuły instruktażowe dla autorów esejów), wstaw następujący kod do pliku pętli.

<?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. Podaj listę przyszłych postów

Most Wanted WordPress Loop Hacks

Poinformowanie czytelników o nadchodzących postach może wzbudzić ich zainteresowanie i sprawić, że powrócą do Twojego bloga, aby je przeczytać. Jeśli wydaje Ci się to świetnym pomysłem, użyj poniższego kodu, aby podać krótką listę nadchodzących postów w Twojej witrynie 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. Pobierz posty przesłane w określonym dniu

Most Wanted WordPress Loop Hacks

Jeśli często masz problemy ze znalezieniem postów w swoim kanale, możesz je wyszukać za pomocą pętli. Jest to możliwe po wstawieniu poniższego kodu, który bardzo ułatwia wyszukiwanie. W szczególności pobiera wpisy opublikowane między dwiema datami, które sam określisz.

<?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. Wyświetl pętlę obrazów

Galeria obrazów na stronie startowej witryny WordPress to dobry pomysł, ponieważ większość ludzi docenia wizualizacje. Jeśli Twoje posty zawierają potencjalny obraz, poniższy kod pobierze je i zapętli.

Wstaw następujący kod do pliku 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. Automatycznie usuwaj posty, ustawiając datę wygaśnięcia

Załóżmy, że organizujesz konkurs, aby zwiększyć czytelnictwo swojego bloga. Po zakończeniu konkursu publikujesz wyniki, a co najważniejsze, odpowiedzi lub podpowiedzi i wskazówki do nich. Oczywiście nie powinny być dostępne dla czytelników na zawsze, ponieważ w przyszłości możesz przeprowadzić kolejny konkurs, prawda?

Dobrym sposobem na usuwanie postów, nawet jeśli o nich zapomniałeś, jest zaplanowanie ich przez ustawienie daty wygaśnięcia. Poniższa pętla zastępuje istniejącą i właśnie to robi.

Nie zapomnij użyć formatu mm/dd/rrrr 00:00:00, aby zastąpić czas wygaśnięcia.

<?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. Oddziel komentarze od trackbacków

Most Wanted WordPress Loop Hacks

Popularny wpis na Twoim blogu będzie zawierał linki z wielu innych witryn. Aby czytelnicy mogli wygodnie śledzić dyskusję w sekcji komentarzy, należy oddzielić komentarze i trackbacki.

Wszystko, co musisz zrobić, to otworzyć comments.php i poszukać:

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

Znalazłeś to? Świetnie, teraz zastąp go nowym kodem:

<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. Pokaż powiązane posty

Most Wanted WordPress Loop Hacks

Wyświetlanie powiązanych postów to dobry sposób na zwiększenie czytelnictwa. Wszystko, co musisz zrobić, aby to osiągnąć, to wkleić specjalny kod do pliku 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. Określ, jak poszczególne posty są wyświetlane na stronie głównej

Most Wanted WordPress Loop Hacks

Zdecydowana większość motywów WordPress wyświetla wszystkie posty w ten sam sposób na stronie startowej. Jeśli jednak ci się nie podoba, możesz to zmienić i określić, które z nich powinny być wyświetlane w całości, a do których wystarczą tylko fragmenty.

Znajdź plik index.php i poszukaj tam pętli. Zastępuje go następujący kod:

<?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. Wyświetlaj treści promocyjne nad postami na stronie głównej

Wstaw następujący kod w pliku index.php, aby dodać treść promocyjną.

<div class="content-loop">

#13. Lista wszystkich autorów bloga na stronie

Most Wanted WordPress Loop Hacks

Wystarczy wkleić ten kod w dowolnym miejscu pętli, aby wyświetlić listę wszystkich autorów.

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

# 14. Użyj pola niestandardowego, aby wyświetlić imię i nazwisko autora gościa

Jeśli w swoim blogu używasz autorów gościnnych, bardzo prawdopodobne jest, że nie tworzysz dla nich osobnej strony. Dlaczego zamiast tego po prostu nie wyświetlić ich nazwiska?

Wstaw ten kod do single.php, aby to zrobić:

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

#15. Ustaw obraz jako obowiązkowy wymóg publikacji

Posty z obrazami często cieszą się większą liczbą wyświetleń niż te bez. Otwórz plik functions.php, aby były obowiązkowe.

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. Przekieruj do określonej strony po rejestracji

Otwórz plik functions.php i dodaj poniższy kod.

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. Użyj skrótów do wyświetlania reklam

Wybierz miejsce, w którym chcesz wstawić ogłoszenie i wklej poniższy kod do functions.php.

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

# 19. Wyświetl najczęściej komentowane posty

Most Wanted WordPress Loop Hacks

Dodaj następujący kod do pliku functions.php, aby wyświetlić posty z największą liczbą komentarzy.

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. Włącz obsługę wyróżnionych obrazów

Zdecydowana większość motywów WordPress obsługuje polecane obrazy, ale jeśli nie masz takiej możliwości, możesz ją włączyć, wstawiając ją do pliku functions.php.

add_theme_support( 'post-thumbnails' );

#21. Pokaż najnowsze komentarze

Most Wanted WordPress Loop Hacks

Użyj tego kodu w dowolnym miejscu pętli, aby wyświetlić pięć ostatnich komentarzy.

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

Gotowy do hakowania?

Skorzystaj z tych przydatnych poprawek i zwiększ funkcjonalność swojej witryny WordPress!