在我的活动主题中,有一个user.php,它提供这种网址http://mysite.com/user/username。在user.php中我用以下内容回显脚本标记
$.ajax({ url: "' . get_theme_root_uri() . '/fray/userslogan.php",
data: {"id": ' . $profile['id'] . ', "slogan": el.innerHTML},
type: "post",
success: function(status) { alert(status); }
});
我创建了一个文件userslogan.php,并将其添加到与user.php相同的级别。现在,我想要做的就是
<?php
update_user_meta( $_POST['id'], 'slogan', $_POST['slogan'] );
echo 1;
?>
但是我得到的错误是我调用的函数未定义。因此,如果我包含一些定义update_user_meta函数的文件,那么我将得到另一个类似的错误,依此类推。执行这样的代码的正确方法是什么?
答案 0 :(得分:3)
您需要包含wp-load.php
才能访问自定义文件中的wordpress功能。
建议:Don’t include wp-load, please.以正确的方式在wordpress中使用ajax。您可以参考此article。
来自上篇文章
为什么这是错误的
- 你没有wp-load.php实际上的第一个线索。插件目录和wp-content目录都可以移动 在安装中。可以移动所有WordPress文件 这样,你打算四处搜寻吗?
- 您立即将该服务器上的负载加倍。 WordPress和它的PHP处理现在都必须为每个页面加载两次 加载。一旦生成页面,然后再生产你的 生成的javascript。
- 您正在动态生成javascript。这只是缓存和速度的废话等。
醇>
答案 1 :(得分:3)
尝试WP AJAX
1)http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)
2)http://codex.wordpress.org/AJAX_in_Plugins
add_action( 'admin_footer', 'my_action_javascript' );
function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
var data = {
action: 'my_action',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
});
</script>
<?php
}
add_action('wp_ajax_my_action', 'my_action_callback');
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$whatever = intval( $_POST['whatever'] );
$whatever += 10;
echo $whatever;
die(); // this is required to return a proper result
}
答案 2 :(得分:0)
您需要拥有整个Wordpress代码库。你最好的选择是创建一个真正的Wordpress插件,这将比这更容易。