Frage

Ich zeige eine zufällige Postschleife auf einer Seite. Ich möchte einen "Aktualisieren" -Link setzen, um den Inhalt der Schleife über Ajax zu aktualisieren.

Ist das möglich?

Dies ist meine Schleife, wenn es hilft:

            <ul id="content-inner" class="thumb-grid clearfix">
            <?php query_posts('posts_per_page=20&orderby=rand'); ?>
            <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                <li>
                    <a href="<?php the_permalink(); ?>">
                        <img src="<?php echo $my_image_url = get('thumbnail'); ?>" alt="" />
                        <span class="title"><?php the_title(); ?></span>
                        <span class="feat"><?php $articletags = strip_tags(get_the_tag_list('',', ',''));echo $articletags;?></span>
                    </a>
                </li>
            <?php endwhile;?>
            <?php endif; ?>
            <?php wp_reset_query(); ?>
            </ul>
War es hilfreich?

Lösung

Sollte nicht zu schwierig sein. Erstens: Erstellen Sie eine JavaScript -Datei und fügen Sie dies hinzu:

jQuery(document).ready(function($){
  $('#refresh-links-id').click(function(e){
    e.preventDefault();
    $.post(ajaxurl,{action:'jpb_random_loop'}, function(data){
      $('#content-inner').fadeOut(250).empty().append( data ).fadeIn(250);
    });
  });
});

Speichern Sie diese Datei irgendwo in Ihrem Themenverzeichnis (könnte auch in einem Unterverzeichnis stattfinden). Damit dies funktioniert ul#content-inner. Ziemlich einfacher jQuery Post Call.

Fügen Sie dies als nächstes zu Ihrem Thema hinzu functions.php Datei:

function jpb_template_redirect(){
  if( <conditions under which this javascript should execute> ){
    wp_enqueue_script( 'random-loop', '<url to the javascript file above>', array( 'jquery' ), '1.0' );
  }
}

function jpb_random_loop_cb(){
  query_posts('posts_per_page=20&orderby=rand');
  if (have_posts()) : while (have_posts()) : the_post(); ?>
    <li>
      <a href="<?php the_permalink(); ?>">
      <img src="<?php echo $my_image_url = get('thumbnail'); ?>" alt="" />
      <span class="title"><?php the_title(); ?></span>
      <span class="feat"><?php $articletags = strip_tags(get_the_tag_list('',', ',''));echo $articletags;?></span>
      </a>
    </li>
  <?php endwhile; endif;
  die();
}

add_action( 'template_redirect', 'jpb_template_redirect' );
add_action( 'wp_ajax_jpb_random_loop', 'jpb_random_loop_cb' );
add_action( 'wp_ajax_nopriv_jpb_random_loop', 'jpb_random_loop_cb' );

Das wird alles zusammenbinden. Stellen Sie einfach sicher, dass die Logik in der korrekt ist template_redirect Funktion so, dass das JavaScript auf den richtigen Seiten enthalten ist.

Andere Tipps

Dieses Plugin scheint das zu tun, wonach Sie suchen.

http://wordpress.org/extend/plugins/wp-ajax-random-posts/

Wenn Sie das Plugin nicht verwenden möchten, können Sie den Code immer nach dem Aktualisierungslink überprüfen und versuchen, ihn für Sie zu funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top