用于刷新帖子的AJAX插件存在问题

时间:2012-02-07 作者:Pollux Khafra

Im使用了一个名为“wp ajax random posts”的很酷的插件。它基本上允许我在模板中调用一个函数,该模板可以自动刷新帖子循环。在我尝试更改函数内部的循环结构之前,它工作得很好。我的帖子嵌入了youtube视频,所以我对其进行了设置,以便该部分只调用视频及其收视率。最初它只是为了一个标题,效果很好,但当我添加视频时,它在原来的标题下返回了第二篇帖子,这篇帖子应该已经消失了。从那里,它像正常一样刷新底部视频,这让我感到不可思议。这是原始函数,然后是修改后的函数。有人能指出这是为什么吗?

function WARP_Random_posts($args=\'\'){
$defargs=array(\'number\' => 8, \'cmtcount\' => 0, \'excerpt\' => 0, \'length\' => 100, \'auto\' => 0, \'time\' => 60);
$args = wp_parse_args($args, $defargs);$output=\'\';$number=$args[\'number\'];
query_posts("showposts=$number&orderby=rand&cat=3");
if(have_posts()){
    while (have_posts()) :the_post();
        $output.=\'<li id="random-post-\'.get_the_ID().\'" class="random-post"><div class="random-post-title"><a title="\'.get_the_title().\'" class="random-post-link" href="\'.get_permalink().\'">\'.get_the_title().\'</a>\';
        if($args[\'cmtcount\']!=0)$output.=\'(\'.get_comments_number().\')\';
        $output.=\'</div>\';
        if($args[\'excerpt\']!=0)$output.=\'<div class="random-post-excerpt">\'.WARP_Random_posts_substr(strip_tags(get_the_content()),(int)$args[\'length\']).\'</div>\';;
        $output.=\'</li>\';
    endwhile;
    $output.=\'<li id="random-post-more" class="random-post" style="text-align:center"><div><a style="width:100%;height:100%" href="javascript:;" onclick="WARP_.get_random_posts(\\\'number=\'.$args[\'number\'].\'&cmtcount=\'.$args[\'cmtcount\'].\'&excerpt=\'.$args[\'excerpt\'].\'&length=\'.$args[\'length\'].\'&auto=\'.$args[\'auto\'].\'&time=\'.$args[\'time\'].\'\\\')">\'.__(\'Refresh\', \'WP-Ajax-Random-Posts\').\'</a>\'.($args[\'auto\']?\': <span id="refreshTime">\'.$args[\'time\'].\'</span>\':\'\').\'</div></li>\';
    return $output;
}else{
    WARP__showErr(__(\'There is no post.\',\'WP-Ajax-Random-Posts\'));
}
}
已修改。。。

function WARP_Random_posts($args=\'\'){
    $defargs=array(\'number\' => 8, \'cmtcount\' => 0, \'excerpt\' => 0, \'length\' => 100, \'auto\' => 0, \'time\' => 60);
    $args = wp_parse_args($args, $defargs);$output=\'\';$number=$args[\'number\'];
    query_posts("showposts=$number&orderby=rand&cat=3");
    if(have_posts()){
    while (have_posts()) :the_post();
         $name = get_post_meta(get_the_ID(),\'video_code\',true);
         youtube_video_embed( $name, \'autoplay=on&width=640&height=376\' );
         if(function_exists(\'the_ratings\')) { the_ratings(); };
         if($args[\'cmtcount\']!=0)$output.=\'(\'.get_comments_number().\')\';
         $output.=\'</div>\';
     if($args[\'excerpt\']!=0)$output.=\'<div class="random-post- excerpt">\'.WARP_Random_posts_substr(strip_tags(get_the_content()),(int)$args[\'length\']).\'</div>\';;
         $output.=\'</li>\';
         endwhile;
         $output.=\'<li id="random-post-more" class="random-post" style="text-align:center"><div><a style="width:100%;height:100%" href="javascript:;" onclick="WARP_.get_random_posts(\\\'number=\'.$args[\'number\'].\'&cmtcount=\'.$args[\'cmtcount\'].\'&excerpt=\'.$args[\'excerpt\'].\'&length=\'.$args[\'length\'].\'&auto=\'.$args[\'auto\'].\'&time=\'.$args[\'time\'].\'\\\')">\'.__(\'Refresh\', \'WP-Ajax-Random-Posts\').\'</a>\'.($args[\'auto\']?\': <span id="refreshTime">\'.$args[\'time\'].\'</span>\':\'\').\'</div></li>\';
         return $output;
         }else{
         WARP__showErr(__(\'There is no post.\',\'WP-Ajax-Random-Posts\'));
       }
      }

1 个回复
SO网友:mor7ifer

我认为现在的情况是,jQuery无法销毁元素,因为它没有包装在.random-post li. 尝试将其添加回,看看它是否修复了您的代码。

还有,只是一个注释,您在中添加了一个空格random-post-excerpt 这在原文中是不存在的。

结束

相关推荐

前端AJAX调用无法使用wp_ajax、wp_enQueue_script和wp_Localize_script进行调用

我想我几乎已经对ajax是Wordpress的业务有了头绪,彻底了解了它,但我现在完全被难住了。首先是那些讨厌的东西!我的主插件文件中有以下内容:wp_enqueue_script( \'function\', plugin_dir_url( __FILE__ ) . \'function.js\', array( \'jquery\', \'json2\' ) ); wp_localize_script( \'function\', \'MyAjax\', array( \'ajaxurl\'