我试图开发一个插件。该插件已经开发但是开发的人给我们留下了不支持。当我尝试激活时,出现以下错误并且它没有被激活。
致命错误:在第23行的C:\ xampp \ htdocs .. \ wp-content \ plugins \ sjr-product-import \ functions.php中不在对象上下文中时使用$ this < / p>
行号和相关功能如下。 我不知道会出现什么问题。
/**
* Installation. Runs on activation.
* @since 1.0.0
* @return void
*/
function install(){
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE {$this->db_table} (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`row_id` varchar(22) DEFAULT NULL,
`title` varchar(255) DEFAULT '',
`description` text,
`google_product_category` text,
`product_type` text,
`link` text,
`image_link` text,
`additional_image_link` text,
`condition` text,
`availability` text,
`price` text,
`sale_price` text,
`sale_price_effective_date` text,
`brand` text,
`gtin` text,
`mpn` varchar(22) DEFAULT NULL,
`item_group_id` int(22) DEFAULT NULL,
`color` text,
`material` text,
`pattern` text,
`size` text,
`gender` text,
`age_group` text,
`adwords_labels` text,
`custom_label_0` text,
`custom_label_1` text,
`custom_label_2` text,
`custom_label_3` text,
`custom_label_4` text,
`feed_file` varchar(255) DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `row_id` (`row_id`),
KEY `title` (`title`),
KEY `item_group_id` (`item_group_id`)
) $charset_collate;";
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta( $sql );
} // End install ()
请帮忙。谢谢。
答案 0 :(得分:0)
您遇到错误:
$sql = "CREATE TABLE {$this->db_table} (
此处,$this
未定义。
将其作为全局变量。
为此,请将global $wpdb;
更改为global $wpdb, $this;
或者,检查您应该从哪里获得db_table
的值,替换相应的变量/对象来代替$this->db_table
。
答案 1 :(得分:0)
if (!is_object($wpdb)) {
require_once ABSPATH . 'wp-admin/includes/FILE NAME CLASS OF YOUR FUNCTION get_charset_collate.php';
$wpdb = new 'CLASS_NAME OF YOUR FUNCTION get_charset_collate';
}
并尝试用{$ wpdb-&gt; db_table}替换{$ this-&gt; db_table} 注意:这只是检查对象变量的想法。
答案 2 :(得分:0)
你应该在functions.php中使用类似下面的代码来使用$this
:
class SomeClass {
var $db_table = 'my_table';
...
function install() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE {$this->db_table} (
但您可能没有类似的代码从$this->db_table
var $db_table
所以用
代替第238行$sql = "CREATE TABLE my_table (
测试它是否有效