在WordPress外部获取user_id,

时间:2013-05-01 作者:user32269

我正在尝试获取wordpress之外的User\\u ID。我有一个评级插件,它需要当前的用户id来投票。然而,似乎有什么地方出了问题。这是我在函数中使用的代码部分。php文件:

function get_userid(){
  $user = get_current_user_id( );
  //i can correctly echo the user_id here
  return $user;
}
function add_thumbsup(){
   include \'./thumbsup/init.php\';

   echo ThumbsUp::javascript();
}
add_action(\'wp_head\', \'add_thumbsup\');
在初始化内。php我有一个回调函数来获取\\u userid()。到目前为止还不错。

在插件中,我有一个用于检查user\\u id的块:

public static function get_user_id()
{
    // Cache
    static $user_id = FALSE;

    // This code only needs to be executed once per request
    if ($user_id !== FALSE)
        return $user_id;

    // The callback config is left empty
    if ( ! ThumbsUp::config(\'user_id_callback\'))
        return $user_id = NULL;

    // Load the user id
    $user_id = (int) call_user_func(ThumbsUp::config(\'user_id_callback\'));
            //returns value from get_userid()
            //echo $user_id => 33
    // Set user id to NULL if not found
    return ($user_id) ? $user_id : $user_id = NULL;
}
它在回显时显示我正确的user\\u id 33。但是,当按下“向上/向下投票”时,该函数返回NULL。

这会是一个与Ajax/Javascript相关的问题吗?或者我该如何解决这个问题?

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

AJAX请求(您暗示您正在使用,但没有解释/演示)不会加载活动主题,这就是functions.php 驻留(除非您指的是functions.php 您在插件目录中创建的文件)。因此,您的call_user_func() 可能会失败,因为您尝试调用的函数未加载。

请注意,将插件功能与主题功能混合在一起被视为糟糕的形式。

我强烈建议您只需调用get_current_user_id( ) 在你的插件文件中,而不是你目前建立的这种奇怪的循环。

此外,如果插件需要在加载主题时插入代码或功能,则应使用Wordpress Plugin API\'s操作挂钩和过滤器,以便在需要时加载和执行代码,而不是将其插入主题目录。

如果希望继续沿着当前路径前进,可以尝试显式地require() 你的functions.php 第一次开始处理AJAX请求时的文件;知道这可能会产生不良副作用strongly 建议不要这样做。

结束

相关推荐

Remove the_content From Loop

我试图显示一个只有特定元素的自定义循环。“我的循环”当前包含标题、创建日期、作者和;所容纳之物然而,我正在尝试删除循环中每个帖子的内容,因为我不希望它在这个列表中显示得不走运。我甚至已经从循环中删除了\\u content();它仍然会在循环部分下显示帖子内容的列表。任何帮助都将不胜感激,这是我的代码:<?php query_posts(\'category_name=halloween &posts_per_page=6\'); ?> <?php if ( have_p