通过GET的变量不能在wordpress中工作

时间:2015-11-17 17:09:10

标签: php wordpress

我通过$ _GET将一个变量带到一个处理动作的页面,变量正确地继承,但数据库不会更新并抛出错误。

这是我与变量的链接;



echo "<td><a href='".plugins_url()."/myremovalsquote/inc/disable.php?id=".$active_partner->partner_id."' class='button-primary'>Disable</a></td>";
&#13;
&#13;
&#13;

然后我使用我的/disable.php

中传递的变量

&#13;
&#13;
$id = $_GET['id'];

echo $id;

global $wpdb;

if ($commit = $wpdb->query("UPDATE partners SET active='no' WHERE partner_id='"'$id'"'")) {
	echo 'Success';
} else {
	echo 'Failed';
}
&#13;
&#13;
&#13;

echo输出正确的字符串,但后来我收到此错误消息。

&#13;
&#13;
77
Fatal error: Call to a member function query() on a non-object in /home/myremovalsquote/public_html/wp-content/plugins/myremovalsquote/inc/disable.php on line 9
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您在不加载WordPress的情况下直接调用PHP文件,因此$wpdb及其方法无法使用。

您可以通过添加wp-load.php来解决此问题,但这通常被视为不良形式,如Don't include wp-load please中所述。

更好的解决方案是创建AJAX listener,然后从您的链接中调用它(它不一定是JavaScript请求或JSON响应)。您需要传入action以调用正确的PHP方法以及其他变量。

// attach action "handler_33762965" to the handler_33762965() function for admin (wp_ajax_*) and front end (wp_ajax_nopriv_*)
add_action( 'wp_ajax_handler_33762965', 'handler_33762965' );
add_action( 'wp_ajax_norpriv_handler_33762965', 'handler_33762965' );
function handler_33762965(){
    // make sure the ID is set before grabbing it
    $id = isset( $_GET['id'] )? $_GET['id'] : 0;
    // do stuff
    exit();
}

您的链接如下所示。

<a href="/wp-load.php?action=handler_33762965&id=<?php echo $id; ?>">link</a>