【问题标题】:Wordpress custom plugin wpdb not recognizedWordpress 自定义插件 wpdb 无法识别
【发布时间】:2013-06-20 14:16:13
【问题描述】:

我正在开发我的第一个 wordpress 插件,我可以在其中列出我所有的员工以及一些 CRUD 功能。

当我点击“添加员工”时,我会看到一个新窗口,我可以在其中填写员工的所有字段,然后点击“保存”

但是当我点击保存时,我得到以下 PHP 错误:

   Fatal error: Call to a member function insert() on a non-object in C:\wamp\www\wp-custom-plugin\wp-content\plugins\werknemers\employee_crud_functions.php on line 15

当我查看第 15 行时,代码是:

 $wpdb->insert( ... )

这是我的表单,操作设置为该 php 页面

 <form method="POST" action="<?php bloginfo('url') ?>/wp-content/plugins/werknemers/employee_crud_functions.php">

我假设该文件不知道 $wpdb 变量。但是我怎样才能让那个 php 页面知道它是什么?还是我用错了?

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    您很可能错过了$wpdb 的全局声明。

    来自wpdb reference。

    WordPress provides a global variable, $wpdb, 
    which is an instantiation of the class already 
    set up to talk to the WordPress database. 
    Always use the global $wpdb variable. 
    (Remember to globalize $wpdb before using it in any custom functions.)
    

    你需要这样使用它。

    global $wpdb;
    //do something with it.
    

    【讨论】:

    • 我忘了提到我已经声明了那个变量......但在我的情况下它不是一个函数,我只是重定向到一个读取我的 $_POST 变量的页面,我需要为它并以某种方式钩住它?
    • 如果您只发布相关代码而不是我们猜测会很好。 :)
    • 我现在没有代码,但我打算在我在代码所在的计算机上时这样做;)
    【解决方案2】:

    你有你的 $wbdb 全局吗? 我知道使用全局不是很好的做法,但大多数 Wordpress 插件似乎都以这种方式工作......

     function myFunction() {
           global $wpdb;
           $wpdb->insert(...);
        }
    

    【讨论】:

    • 我忘了提到我已经声明了那个变量......但在我的情况下它不是一个函数,我只是重定向到一个读取我的 $_POST 变量的页面,我需要为它并以某种方式钩住它?
    【解决方案3】:

    你可以像这样包含 wp-config 文件 包括('../../../wp-config.php');这个对我有用。 这里我的文件夹的目录结构是 F:\wamp64\www\Wordpress\custom_plugin_development\wp-content\plugins\CRUD-Plugin

    【讨论】:

      猜你喜欢
      • 2013-07-05
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多