我对wordpress真的很陌生,我正在尝试构建一个页面,用给定的参数更新数据库。例如,如果客户端应用程序调用https://codonmaster.000webhostapp.com/ranking.php?scoretime=30&nickname=hellooo&score=100 , 然后我想在数据库中插入一列(\'helloo\',30100)。
然而,我一直无法将查询变量添加到我的php代码中。页面始终显示
defaultname,1566820333(current timestamp),0
是,默认值。我应该在哪里更改此页面以确认所需的变量?
我的代码如下:
<?php
require_once(dirname(__FILE__) . \'/wp-config.php\');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
$wp->send_headers();
function themeslug_query_vars( $qvars ) {
$qvars[] = \'scoretime\';
$qvars[] = \'nickname\';
$qvars[] = \'score\';
return $qvars;
}
add_filter( \'query_vars\', \'themeslug_query_vars\' );
$scoretime = get_query_var( \'scoretime\', \'\'.time());
$nickname = get_query_var( \'nickname\', \'defaultname\' );
$score = get_query_var(\'score\', \'0\');
echo "{$nickname},{$scoretime},{$score}";
最合适的回答,由SO网友:djboris 整理而成
在WordPress中,查询变量并不是您所认为的那样。它们是全球WP_Query
处理主页请求的对象。检查the docs 了解更多信息。
在这种情况下,您需要检查$_GET
页面加载上的参数。
例如:
$scoretime = filter_input( INPUT_GET, \'scoretime\', FILTER_SANITIZE_NUMBER_INT ) ?: (string) time();
$score = filter_input( INPUT_GET, \'score\', FILTER_SANITIZE_NUMBER_INT ) ?: \'0\';
$nickname = filter_input( INPUT_GET, \'nickname\', FILTER_SANITIZE_STRING ) ?: \'defaultname\';
请注意,我使用
filter_input()
方法,这是对输入进行清理的良好实践,尤其是如果您计划将其插入数据库中。
此外,我在?:
, 这是一个short ternary 运算符,如果其值为truthy,则为其赋值。