Ondersteuning » Code oplossingen gezocht » AJAX call wp_list_comments() in plugin

  • Opgelost MrMastermindNL

    (@mrmastermindnl)


    Hoi,

    Ik probeer een plugin te schrijven die iedere x-seconden de commentslist ververst van een post. Ik heb de plugin zo ver werkend, dat de AJAX call wordt gemaakt. Maar op een of andere mannier lukt het me niet op de comment list te verversen.

    Dit is de functie die ik gebruik om de ajax call te voorzien van de juiste data:

    public function ajaxRefresh()
    	{
    		wp_list_comments('callback=mytheme_comment&reverse_children=true');
    		die();
    	}

    Het lijkt er op dat de wp_list_comments niet uitgevoerd kan worden. De action hook die ik gebruik voor het initialiseren van de plugin is “template_redirect”.

    Dit is de javascript functie die wordt aangesproken:

    function amm_realtime_comments()
    {
    	jQuery.post( AmmAjax.ajaxurl,
    	{
    		action: 'amm_realtime_comments'
    	},
    		function(response){
    
    			jQuery('.commentlist').html(response);
    		}
    	);
    }

    Wat ik terug krijg is of “0” als je bent ingelogd of “-1” als je niet bent ingelogt.

    Weet iemand wat ik hier verkeerd doe?

    Alvast bedankt voor de hulp!

    Groet,
    Marco

7 reacties aan het bekijken - 1 tot 7 (van in totaal 7)
  • Moderator Remkus de Vries

    (@defries)

    Sleutelbeheer WordPress NL

    Waarom kijk je niet hoe P2 het doet?

    Thread starter MrMastermindNL

    (@mrmastermindnl)

    Bedankt voor de tip Remkus.

    Ik heb er naar gekeken en zie dat ze daar de comments list volledig opnieuw custom opbouwen met eigen functies en $wp_query gebruiken om ze op te halen.
    Dat is natuurlijk een prima oplossing, maar ik had gehoopt op een oplossing waarbij ik in mijn AJAX call ongeveer dezelfde standaard WordPress functie’s kan gebruiken, die ik ook gebruik in de template zelf. Dus bijvoorbeeld de HTML terug geven van wp_list_comments. Maar blijkbaar kun je die alleen gebruiken in combinatie met comments.php, omdat die wordt aangesproken in de loop van single.php dmv comments_template().

    Mocht iemand nog een idee hebben om toch dicht bij wp_list_comments te blijven, ipv een compleet custom functie, dan hoor ik dat graag. Anders zal ik er toch even voor moeten gaan zitten…

    Alvast weer bedankt.

    Groet,
    Marco

    Thread starter MrMastermindNL

    (@mrmastermindnl)

    Na nog wat testjes, denk ik dat het probleem ook zou kunnen zitten in de action hook van de plugin. Ik heb tijdens de testjes de volgende code gebruikt in de call:
    comments_template(get_bloginfo('template_url').'/comments.php');

    in de functie heb ik even tijdelijk een debug echo gezet. Deze echo komt voorbij, dus de functie wordt wel aangesproken door de AJAX call. Wat ik nu denk, is dat tijdens de AJAX call niet de juiste data beschikbaar is van de post of comments, waardoor er verder geen resultaat terugkomt.

    Thread starter MrMastermindNL

    (@mrmastermindnl)

    Ik heb het opgelost! Wat in ieder geval belangrijk was, was het terugkrijgen van het post id van de Javascript AJAX call naar de PHP functie die wordt aangesproken. Daar heb ik nu het volgende in staan:

    public function ajaxRefresh()
    	{
    		global $post, $wpdb, $wp_query, $user_ID, $user_identity;
    
    		$post_id = ( isset( $_POST['postid'] ) ) ? (int) $_POST['postid'] : null;
    
    		if($post_id != null)
    			query_posts( array( 'p' => $post_id ) );
    
    		if ( have_posts() ) {
    			while( have_posts() ) {
    				the_post();
    				comments_template();
    			}
    		}
    		die();
    	}

    Met het terugkrijgen van de post id kun je dan de query_posts doen en met het resultaat de comments_template() functie aanroepen.

    Moderator Remkus de Vries

    (@defries)

    Sleutelbeheer WordPress NL

    cool! Misschien is dit ook nog leuk om even naar te kijken: http://davidcoveney.com/live-threaded-commenting-on-wp/

    Thread starter MrMastermindNL

    (@mrmastermindnl)

    haha, denk dat ik mijn plugin maar in de prullemand gooi. Was een goed leermoment. Maar die Spectacu.la Discussion heeft alles wat ik nodig heb en dan nog een beetje.
    Echt super hoe je per post kunt aan en uitzetten of je live wilt commenten.

    Bedankt voor de tip Remkus!

    Moderator Remkus de Vries

    (@defries)

    Sleutelbeheer WordPress NL

    u vraagt, wij draaien 🙂

7 reacties aan het bekijken - 1 tot 7 (van in totaal 7)
  • Het onderwerp ‘AJAX call wp_list_comments() in plugin’ is gesloten voor nieuwe reacties.