使用AJAX批量更新元值

时间:2014-05-21 作者:shubhra

单击后,我想将wp\\u查询中的posts元值更新为其他值。我基本上是在做一个通知气泡(比如stackoverflow)。

  1. wp_query 对于元值为“未读”的帖子数量,在登录用户的显示名称上显示计数气泡-工作单击通知时,隐藏气泡并仅使用ajax更改中帖子的元值wp_query 从“未读”到“已读”,这样只有当有一篇新帖子的元值为“未读”时,计数才可见——如何

    add_shortcode(\'notify\', \'notify_member\');
        function notify_member() {
            global $current_user;
            get_currentuserinfo();
            $userid = $current_user->ID;
                $args = array(
                    \'posts_per_page\' => \'-1\',
                    \'post_type\' => \'answer\',
                    \'post_status\' => \'publish\',
                    \'author__not_in\' => $userid, //exclude user posts
                    \'meta_query\' => array(
                            \'relation\' => \'AND\',
                        array(
                            \'key\' => \'question_owner_id\'
                            \'value\' => $userid, //only show posts for the user
                            \'compare\' => \'=\'
                        ),
                            array(
                                \'key\' => \'_read_answer\'
                                \'value\' => \'unread\', //only show unread posts
                                \'compare\' => \'=\'
                            ),
                        )
                    );
                    $questions = new WP_Query( $args );
                    $html = \'\';
                    $html .= \'<a href="#" class="count">\'.$questions->found_posts.\'</a>\'; //total count
                    return $html;
        }
    
    我看过ajax-like和vote教程,它们一次处理一个帖子。我需要下面的工作,为所有返回的职位从查询和更改在同一时间。

                if( $questions->have_posts() ) {
                while ( $questions->have_posts() ) { $questions->the_post();
                     update_post_meta( $post->ID, \'_read_answer\', \'read\' ); 
                    }
                }
    
    我没有主意,欢迎任何方向。谢谢P、 我不是一个程序员,所以请解释一下。

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

点击后<a> tage发送ajax请求。我将只写php代码做jQuery 分开你自己。

<script type="text/javascript" >
    jQuery(document).ready(function($) {

    var data = {
        action: \'my_action\'
    };

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    $.post(ajaxurl, data, function(response) {
        //Do watever after you get response
    });
});
</script>
在您的function.php

add_action( \'wp_ajax_my_action\', \'my_action\' );
add_action( \'wp_ajax_nopriv_my_action\', \'my_action\' );
function my_action(){
    global $current_user;
    get_currentuserinfo();
    $userid = $current_user->ID; //You can also user get_current_user_id() to get current user id
    $args = array(
        \'posts_per_page\' => \'-1\',
        \'post_type\' => \'answer\',
        \'post_status\' => \'publish\',
        \'author__not_in\' => $userid, //exclude user posts
        \'meta_query\' => array(
            \'relation\' => \'AND\',
            array(
                \'key\' => \'question_owner_id\'
                \'value\' => $userid, //only show posts for the user
                \'compare\' => \'=\'
            ),
            array(
                \'key\' => \'_read_answer\'
                \'value\' => \'unread\', //only show unread posts
                \'compare\' => \'=\'
            ),
         )
    );
    $questions = new WP_Query( $args ); //Get all the post whose meta you want to update
    foreach($questions->posts as $question):
        update_post_meta( $question->ID, \'_read_answer\', \'read\' ); //Update all the posts meta.
    endforeach;
    echo true; //Send the response. You can aslo send response whatever you want.
    die();
}
当有人点击a 标记它将向服务器发送ajax请求。服务器运行前面的代码以获取其meta 您要更新。收到帖子后,更新他们的meta 价值

结束

相关推荐

JQuery AJAX添加了json2依赖吗?

我正在Wordpress中使用jQuery和AJAX开发投票系统。为了使这个投票系统工作,我需要在我的主题中使用jQuery。所以在我的函数中写下了代码。php。但出于某种原因,我的剧本什么都没做。Watch my full vote script here.所以我开始阅读抄本,发现here 要包含用于AJAX调用的jQuery,需要json2依赖项。有没有人有这方面的经验,可以告诉我需要如何包括这一点,因为jQuery已经在Wordpress中注册了,所以我是否需要再次注册jQuery并将json2依赖