如何在WordPress中正确调用AJAX?

时间:2011-04-29 作者:Sisir

我正在尝试使用jquery ui选项卡和ajax调用来运行函数。以下是我使用的代码:

function ajax_load_user_feed(){
    if(isset($_GET[\'type\'])) $type = $_GET[\'type\'];
    if(isset($_GET[\'userid\'])) $userid = $_GET[\'userid\'];

    if(!$type && !$userid){
        $type = \'error\';
        show_feed($type);
        die();
    } else {
        $user_info = get_userdata($userid);
        show_feed($type, $user_info);
        die();
    }
}
add_action(\'wp_ajax_load_user_feed\', \'ajax_load_user_feed\');


function show_feed($type, $user){
    if($type == \'rss\'){
      echo \'<div>Show rss Feed</div>\';

    } elseif($type == \'twitter\'){
        echo \'<div>Show twitter Feed</div>\';

    } elseif($type == \'facebook\'){
        echo \'<div>Show Facebook Feed</div>\';
    } elseif($type == \'error\'){
        echo \'<div class="feed_error">Something is wrong with the request!</div>\';
    }
}

The html for jqurey ui tabs:

<div class="tabs">

                        <ul id="social-media-activity-button" class="tabs">
                            <?php  if($author->feeds): ?>
                                    <li class="activity-blogs"><a title="activity_feed" href="<?php bloginfo(\'wpurl\'); ?>/wp-admin/admin-ajax.php?action=load_user_feed&type=rss&userid=<?php echo $author->ID; ?>">Blogs</a></li>
                                <?php endif; if($author->twitter): ?>
                                <li class="activity-twitter"><a title="activity_feed" href="<?php bloginfo(\'wpurl\'); ?>/wp-admin/admin-ajax.php?action=load_user_feed&type=twitter&userid=<?php echo $author->ID; ?>">Twitter</a></li>
                                <?php endif; if($author->facebook): ?>
                                <li class="activity-facebook"><a title="activity_feed" href="<?php bloginfo(\'wpurl\'); ?>/wp-admin/admin-ajax.php?action=load_user_feed&type=facebook&userid=<?php echo $author->ID; ?>">Facebook</a></li>
                                <?php endif; ?>
                        </ul>

                        <h2 class="dotted">Activity Feed</h2>

                        <div id="activity_feed">

                        </div>
我在这里要做的是调用admin ajax。调用函数的php文件load_user_feed(); 作用

现在,该代码仅适用于登录用户。我的意思是当用户登录查看提要,但注销的用户只查看-1 在输出中。页面如下:http://citystir.com/author/designdons/

一定有什么好方法可以使用jquery ui选项卡调用ajax。

等待您的帮助。谢谢

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

您的ajax挂钩

 add_action(\'wp_ajax_load_user_feed\', \'ajax_load_user_feed\');
仅适用于已登录用户,如果您不希望任何已登录用户(来宾或访客),请添加:

 add_action(\'wp_ajax_nopriv_load_user_feed\', \'ajax_load_user_feed\');
你应该没事的。

结束

相关推荐

在WordPress TwentyTen主题中使用自己的jQuery脚本和css来包含文件的正确方式是什么?

我想在主页上的默认Wordpress主题中包含一个滑块。我确实使用<?php if ( is_home() ) { include (\'slider.php\'); } ?> 但它看起来不像是在加载所需的jquery脚本或样式表。我知道脚本和Wordpress之间存在冲突,我只是不知道如何让它发挥作用。示例页位于http://axiomwest.com/如何在页面中输入自己的样式表和脚本?