如何在自定义PHP文件中执行wordpress功能

时间:2013-09-27 08:30:20

标签: php ajax wordpress

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

3 个答案:

答案 0 :(得分:3)

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

建议:Don’t include wp-load, please.以正确的方式在wordpress中使用ajax。您可以参考此article

来自上篇文章

  

为什么这是错误的

     
      
  1. 你没有wp-load.php实际上的第一个线索。插件目录和wp-content目录都可以移动   在安装中。可以移动所有WordPress文件   这样,你打算四处搜寻吗?
  2.   
  3. 您立即将该服务器上的负载加倍。 WordPress和它的PHP处理现在都必须为每个页面加载两次   加载。一旦生成页面,然后再生产你的   生成的javascript。
  4.   
  5. 您正在动态生成javascript。这只是缓存和速度的废话等。
  6.   

答案 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插件,这将比这更容易。

http://codex.wordpress.org/Writing_a_Plugin