我正在尝试为Wordpress创建一个插件,允许用户在文本框中输入标题。然后,用户单击“提交”并获取该标题并将其添加到数据库中。但是,当您按提交时,它会返回PHP错误:
致命错误:在第49行的/home/matthew/public_html/demo/wp-content/plugins/premium-slider/admin.php中调用非对象的成员函数query()
第49行是以下代码:
$wpdb->query($sql);
然而,根据Wordpress的教程,这是完全有效的代码。
以下是整体代码段:
function print_admin_form() {
if (isset($_POST['addnew'])) {
$new = $_REQUEST['name'];
$name = escape($new);
$sql = "INSERT INTO $table_name_cat (name) VALUES('$new')";
$wpdb->query($sql);
echo $name; }
else {
echo '<div id="message" class="error" style="width:750px;"><p><strong>Failed to add new slider.</strong></p></div>'; }?>
<div class="wrap">
<h2>Easing Slider</h2>
<form method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>&updated=true">
<div class="metabox-holder" style="width:402px;float:left;">
<div class="postbox">
<h3><span>Slider title:</span></h3>
<h4 style="margin:10px;">Name:</h4><input type="text" name="name" style="width: 380px;margin:10px;margin-top:0px;"/>
</div>
</div>
<input type="submit" class="button-primary" name="addnew" value="Save Changes" style="" />
</form>
</div> <?php }
答案 0 :(得分:2)
尝试:
global $wpdb;
作为print_admin_form
函数的第一行。