Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从WordPress中的URL提取参数_Php_Wordpress - Fatal编程技术网

Php 从WordPress中的URL提取参数

Php 从WordPress中的URL提取参数,php,wordpress,Php,Wordpress,我正在尝试使用URL将参数传递到WordPress站点-例如: www.fioriapts.com/?ppc=1将是URL 我打算在functions.php文件中编写一个函数,但如何在WordPress中提取参数的机制我无法理解。我找到了很多关于如何使用函数add\u query\u arg()将参数添加到URL的示例,但没有找到任何关于如何提取参数的示例。提前感谢您的帮助 通过URL传递参数时,可以将值作为GET参数检索 使用以下命令: $variable = $_GET['param_na

我正在尝试使用URL将参数传递到WordPress站点-例如:

www.fioriapts.com/?ppc=1
将是URL


我打算在functions.php文件中编写一个函数,但如何在WordPress中提取参数的机制我无法理解。我找到了很多关于如何使用函数
add\u query\u arg()
将参数添加到URL的示例,但没有找到任何关于如何提取参数的示例。提前感谢您的帮助

通过URL传递参数时,可以将值作为GET参数检索

使用以下命令:

$variable = $_GET['param_name'];

//Or as you have it
$ppc = $_GET['ppc'];
不过,首先检查变量更安全:

if (isset($_GET['ppc'])) {
  $ppc = $_GET['ppc'];
} else {
  //Handle the case where there is no parameter
}
下面是一些关于GET/POST参数的阅读资料,您应该看看:


编辑:我看到这个答案在发布几年后仍然有很多流量。请阅读此答案所附的评论,特别是@emc提供的详细信息,他们详细介绍了安全实现此目标的WordPress功能。

您可以尝试此功能

/**
 * Gets the request parameter.
 *
 * @param      string  $key      The query parameter
 * @param      string  $default  The default value to return if not found
 *
 * @return     string  The request parameter.
 */

function get_request_parameter( $key, $default = '' ) {
    // If not request set
    if ( ! isset( $_REQUEST[ $key ] ) || empty( $_REQUEST[ $key ] ) ) {
        return $default;
    }

    // Set so process it
    return strip_tags( (string) wp_unslash( $_REQUEST[ $key ] ) );
}
下面是函数中发生的情况

这里发生了三件事

  • 首先,我们检查请求密钥是否存在。如果不是,则只返回一个默认值
  • 如果设置了,那么我们首先通过wp_unslash删除斜杠。在这里阅读为什么它比条纹斜杠深
  • 然后,我们通过执行简单的strip_标记来清理该值。如果您希望从参数中获得富格文本,则通过wp_kses或类似函数运行它

所有这些信息以及关于函数背后思想的更多信息都可以在这个链接上找到

为什么不使用WordPress
get\u query\u var()
函数呢

由于get_query_var只能访问WP_query可用的查询参数,为了访问自定义查询变量,如“ppc”,您还需要在插件或
函数中注册此查询变量。php
在初始化过程中添加操作:

add_action('init','add_get_val');
function add_get_val() { 
    global $wp; 
    $wp->add_query_var('ppc'); 
}
或者通过向查询变量过滤器添加钩子:

function add_query_vars_filter( $vars ){
  $vars[] = "ppc";
  return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

在回调函数中,使用$request参数

$parameters = $request->get_params();
echo $parameters['ppc'];

非常感谢-这对我来说是一个无聊的时刻-因此它完全像在标准html/php中一样完成-Wordpress有这么多自定义函数,我认为它会有所不同…这与Wordpress的有冲突吗?除了
$\u GET
之外的另一个选择是
$\u REQUEST
,但是如果可能的话,请出于对安全性使用的热爱。延迟解析原始URL参数是如何发生注入攻击的!此方法是绕过
get\u query\u var
和静态主页的愚蠢错误/功能的唯一方法:@emc
get\u query\u var
不适用于自定义查询变量检查这是正确的方法-Wordpress不鼓励访问$\u get和$\u post但是
query\u vars
如何在
init
参数之后运行从URL中提取?另一个注意事项:必须在functions.php文件中添加筛选器。如果您在第一页使用除博客以外的任何内容,此方法将断开主页@非IQ,因为这些函数进行了大量的消毒,这很容易被忽略。这不一定是在100%的情况下使用的方法,但它是默认方法。当直接访问数据时,WPCS PHP_CodeSniffer规则会发出警告,如果绝对需要直接访问,开发人员应该显式添加忽略注释标志。
$parameters = $request->get_params();
echo $parameters['ppc'];