web-dev-qa-db-ja.com

どのように正しい方法でワードプレスでAjaxを呼び出すには?

私は関数を実行するためにAjax呼び出しでjqueryのuiタブを使用しようとしています。これが私が使っているコードです:

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>';
    }
}

jqureyのuiタブのHTML:

<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>

私がここでやろうとしていることは、関数load_user_feed();を呼び出すためにadmin-ajax.phpファイルを呼び出すことです。

今すぐコードがログインユーザーに対してのみ動作します。ログインしているユーザーがフィードを参照しているが、ログアウトしているユーザーが出力に表示しているのは-1だけです。これがページです: http://citystir.com/author/designdons/ /

Jqueryのuiタブを使ってajaxを呼び出すための良い方法があるはずです。

あなたの助けを待っています。ありがとうございます。

3
Sisir

あなたのAjaxフック

 add_action('wp_ajax_load_user_feed', 'ajax_load_user_feed');

ログインしているユーザー専用です。ログインしていないユーザー(ゲストまたはビジター)がいない場合は、次を追加します

 add_action('wp_ajax_nopriv_load_user_feed', 'ajax_load_user_feed');

そして、あなたは大丈夫なはずです。

7
Bainternet