link variable to user

时间:2011-08-09 作者:lukasz

是否有一种简单的方法可以保存变量并将其链接到用户?

具体来说,我想使用meta-box在首页上输出一个变量,然后让它成为一个链接,这样如果用户单击它,它就会将其存储在div中。我可以做所有meta-box的事情,只需要在单击链接时存储变量。有点像最受欢迎的系统,但更具自定义性。假设我必须以某种方式访问数据库?甚至不知道从哪里开始。

2 个回复
SO网友:Brian Fegter

为了详细说明Chris的回答,AJAX调用在您的函数中看起来像这样。php文件:

add_action(\'wp_ajax_add_favorite\', \'add_favorite\');

function add_favorite(){
    $post_id = $_POST[\'postID\'];
    $nonce = $_POST[\'nonce\'];
    if(!wp_verify_nonce($nonce, \'wpnonce\'))
        exit;

    if($post_id):
        $favorites = get_user_meta(get_current_user_id(), \'favorites\');
        if(in_array($post_id, $favorites)):
            $response = \'Already in favorites.\';
            $success = false;
        else:
            if(add_user_meta(get_current_user_id(), \'favorites\', $post_id, false)):
                $response = "This post was added to your favorites";
                $success = true;
            endif;
        endif;
    else:
        $success = false;
        $response = "No post ID was supplied";
    endif;

    $output = json_encode(array(\'success\'=>$success, \'response\'=>$response));
    echo $output;
    exit;
}
jQuery AJAX请求如下所示:

jQuery(\'.add-to-favorites\').click(function(){

    var data = {
        action: \'add_favorite\',
        nonce: jQuery(\'#_wpnonce\').val(),
        postID: jQuery(this).attr(\'rel\')
    };

    jQuery.post(ajaxurl, data, function(output) {
        var obj = jQuery.parseJSON(output);
        if(!obj.response) alert(\'Something went wrong with the server.\');

        if(obj.success){
            //Do Something Here
            alert(obj.response);
        }
        else{
            alert(obj.response);
        }
    });

    //Disable Click Through
    return false;
});
前端上的链接如下所示:

<a class="add-to-favorites\' rel="<?php echo $post->ID;?>" href="#">Add To Favorites</a>
在被调用的“wpnance”中添加一个隐藏的nonce字段,这应该很管用。此外,确保在前端定义了ajaxurl,以便脚本知道将请求发送到哪里。

不过,您需要在另一个PHP AJAX函数中执行一些反向工程,才能从收藏夹中删除。希望这对你有所帮助。

SO网友:Chris

您可以使用update_user_meta 存储数据,以及get_user_meta 检索数据。至于在单击时实际保存它,您可以在用户单击链接时使用一个简单的ajax调用。查看以下资源,了解如何在Wordpress中处理AJAX。

AJAX in WordpressAJAX in Plugins

结束

相关推荐

query users by role

我有一个查询用户和usermeta的自定义插件,但我现在需要从结果中筛选管理员。我的sql查询的一个非常简化的版本是:SELECT * FROM usermeta LEFT JOIN users ON users.ID = user_id WHERE meta_key = \'last_name\' AND user_role != \'admin\' ORDER BY meta_value ASC LIMIT 0, 25 user_role 不是字段,我看