1

在我的活动主题中,有一个 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 函数的文件,那么我会得到另一个类似的错误,依此类推。执行这样的代码的正确方法是什么?

4

3 回答 3

4

您需要包含wp-load.php才能访问自定义文件中的 wordpress 功能。

建议:请不要包含 wp-load。以正确的方式在 wordpress 中使用 ajax。你可以参考这篇文章

从上面的文章

为什么这是错误的

  1. 您没有第一个线索 wp-load.php 实际上在哪里。插件目录和 wp-content 目录都可以在安装过程中移动。所有的 WordPress 文件都可以用这种方式移动,你要四处寻找它们吗?
  2. 您立即使该服务器上的负载增加了一倍。WordPress 和它的 PHP 处理现在必须为每个页面加载加载两次。一次生成页面,然后再次生成生成的 javascript。
  3. 您正在动态生成 javascript。这对于缓存和速度等来说简直是垃圾。
于 2013-09-27T08:38:57.760 回答
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
   }
于 2013-09-27T09:31:33.207 回答
0

您需要在其中拥有整个 Wordpress 代码库。您最好的选择是制作一个真正的 Wordpress 插件,这将比这容易得多。

http://codex.wordpress.org/Writing_a_Plugin

于 2013-09-27T08:35:50.670 回答