GET_QUERY_var始终返回缺省值

时间:2019-08-27 作者:KYHSGeekCode

我对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}";

1 个回复
最合适的回答,由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,则为其赋值。

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post