Autor |
Nachricht |
vayu
Threadersteller
Dabei seit: 09.05.2009
Ort: Berlin
Alter: 46
Geschlecht:
|
Verfasst Mi 15.02.2012 04:24
Titel Wordpress: Probleme einen Post über Ajax zu laden |
|
|
Ich versuche bei Wordpress (eigenes Theme) einzelne Posts über Ajax zu laden. Die Seite soll sich nicht neu laden, wenn der nächste Post abgerufen wird.
Der "previous_posts_link" und der "next_posts_link" funktioniert nicht richtig. Ich vermute ich mache beim Loop etwas falsch.
Folgendes passiert: beim kicken auf "weiter" wird der gleiche Post geladen und die Pagenavigation verschwindet.
Vielleicht hat einer eine idee.
Hier der Link: (den Bereich der neu laden soll findet man unter "Newsroom")
http://beta.sitgermany.com/
Code: |
<div class="newsroompost" id="contento">
<?php
$random_query = new WP_Query(array(
'showposts' => 1,
'posts_per_page' => 1,
'orderby' => 'date',
'cat' => '4',
'paged' => get_query_var( 'paged' )
));
while ($random_query->have_posts()) : $random_query->the_post(); ?>
<div id="slider1">
<h1 class="newsroomhead"><?php the_title(); ?></h1>
<h5 class="newsroomdatumd"><?php the_time("d.m.Y") ?></h1><br/>
<div class="newsexconten"><?php the_excerpt(); ?></div>
<div class="rechtsruck"><a class="iframe postnewsroom" href="<?php echo get_permalink(); ?>">mehr...</a></div>
</div><!-- slider1 -->
<ul id='postPagination'>
<li><?php previous_posts_link('zurück', 4) ?></li>
<li><?php next_posts_link('weiter', 4); ?></li>
</ul>
<?php endwhile; ?>
</div><!-- newsroompost -->
|
Hier das Javascript:
Code: |
<script type="text/javascript" charset="utf-8">
jQuery(document).ready(function(){
jQuery('#postPagination a').live('click', function(e){
e.preventDefault();
var link = jQuery(this).attr('href');
jQuery('#contento').html('Loading...');
jQuery('#contento').load(link+' #slider1');
});
});
|
</script>
|
|
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 15.02.2012 13:34
Titel
|
|
|
Du überschreibst den Inhalt der von #contento mit dem inhalt von #slider1. Richtig wäre ihn aber wieder mit dem Inhalt von #contento zu überschreiben, da dieser Container ja auch die Navigation beinhaltet. Zudem würde ich in diesem Fall das Caching der AJAX-Requests abschalten:
Code: | jQuery(document).ready(function(){
// caching für ajax-requests deaktivieren
$.ajaxSetup({
cache : false
})
jQuery('#postPagination')
.delegate('a','click', function(e){
e.preventDefault();
var link = jQuery(this).attr('href');
jQuery('#contento')
.html('Loading...')
.load(link + ' #contento');
});
}); |
|
|
|
|
|
Anzeige
|
|
|
vayu
Threadersteller
Dabei seit: 09.05.2009
Ort: Berlin
Alter: 46
Geschlecht:
|
Verfasst Mi 15.02.2012 16:14
Titel Das ist nicht das Problem |
|
|
ich habe es eingebaut, aber leider hier auch ohne erfolg. ich glaube es liegt am loop, da komme ich nicht weiter und da reichen meine Kenntnisse nicht mehr aus.
|
|
|
|
|
WebRex
Dabei seit: 26.07.2011
Ort: -
Alter: 29
Geschlecht:
|
Verfasst Mi 15.02.2012 18:03
Titel
|
|
|
Soll dieser "weiter" und "zurück" Link denn nach jedem News-Artikel erscheinen? Wenn ich für WP Templates schreibe, dann setze ich diese beiden Links außerhalb der Schleife.
Achja, anstatt jQuery.delegate() verwendet man nun jQuery.on().
|
|
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 15.02.2012 19:28
Titel
|
|
|
@WebRex: aber nicht mit dem - in dem beispiel eingebundenen - jquery 1.6
ontopic: ich hatte nur bezug auf dein javascript problem genommen und den rest geflissentlich überlesen.
wenn du tatsächlich jeweils den vorigen bzw. nächsten post laden willst, ist die funktion previous_post_link bzw. next_post_link (also singular... ohne "s") dein freund: http://codex.wordpress.org/Function_Reference/previous_post_link - der link muss jeweils innerhalb deines "the_loop" gesetzt werden (also eigentlich alles richtig, bis auf das "s" zu viel). das nächste problem ist dein query: du holst als "$random_query" immer genau einen post, geordnet nach datum. damit bekommst du immer... den neusten . zusätzlich holst du dir übrigens bei jedem request der die news lädt die komplette seite noch ein mal. dabei entsteht äußerst viel "overhead". am charmantesten wäre eigentlich wenn du einen eigenen seitentyp bzw. ein eigenes template für die news anlegst, welches tatsächlich nur den relevanten inhalt enthält und das per ajax geladen wird. eine (mehr oder weniger gute) anleitung wie du sowas umsetzt findest du hier: http://www.emanueleferonato.com/2010/04/01/loading-wordpress-posts-with-ajax-and-jquery/
Zuletzt bearbeitet von sahnemuh am Mi 15.02.2012 19:29, insgesamt 1-mal bearbeitet
|
|
|
|
|
vayu
Threadersteller
Dabei seit: 09.05.2009
Ort: Berlin
Alter: 46
Geschlecht:
|
Verfasst Do 16.02.2012 02:02
Titel ich versuche das mal und melde mich |
|
|
ich versuche das mal und melde mich, wie es läuft
|
|
|
|
|
|
|
|
Ähnliche Themen |
[AJAX] jQuery Post-Formular
Ajax: Content in nur ein Div laden
Animation & AJAX-Content laden?
WordPress-Plugin: AJAX Umfrage
Buchempfehlungen WordPress / AJAX / jQUERY
wordpress single post design
|
|