我在wordpress主题文件夹中有一个文件。在该文件中,我想在该文件中使用get_user_meta()
和update_user_meta
函数。需要包括哪些内容。因为得到错误:
调用未定义的函数get_user_meta()
require( dirname( __FILE__ ) . '/../../wp-load.php' );
global $current_user;
wp_get_current_user();
$user_id= $current_user->ID;
$user_data = get_user_meta($user_id);
$prev_reward_points = $user_data['reward_points'];
$new_reward_points = $prev_reward_points + 1000;
update_user_meta($user_id,"reward_points",$new_reward_points,$prev_reward_points);
echo "success";
exit;
答案 0 :(得分:2)
将以下行放在您文件的开头。而不是
require( dirname( FILE ) . '/../../wp-load.php' );
放在代码下面
include_once('../../../wp-load.php');
我可以知道您使用的原因,因为不需要在不创建任何自定义文件的情况下完成所有操作。
答案 1 :(得分:0)
如果此文件位于主题文件夹中,则无需包含wp-load.php - 而是" right"遵循WordPress最佳实践的方法是:
require_once 'this_file.php';
)然后,以最适合您需要的方式触发此功能。由于您无法解释您正在做什么,因此很难知道如何在这方面为您提供指导。
function calculate_new_reward_points() {
global $current_user;
wp_get_current_user();
$user_id= $current_user->ID;
// no need to do this way... simplified version below
// $user_data = get_user_meta($user_id);
// see documentation for get_user_meta - can load the value directly
$prev_reward_points = (int)get_user_meta( $user_id, 'reward_points', TRUE );
$new_reward_points = $prev_reward_points + 1000;
// This will NOT store two values the way you have done it - based on your code above, I've modified this line below to work properly
// update_user_meta($user_id, "reward_points", $new_reward_points, $prev_reward_points);
update_user_meta($user_id, "reward_points", $new_reward_points );
echo "success";
}
现在,您只需致电calculate_new_reward_points();
,而不是最初调用该文件的任何地方,而且您已完成。