我正在尝试使用 URL 将参数传递给 WordPress 站点 - 例如:
www.fioriapts.com/?ppc=1
将是 URL。
我打算在 functions.php 文件中编写一个函数,但如何在 WordPress 中提取参数的机制超出了我的范围。我找到了很多关于如何使用该函数将参数添加到 URL 的示例,add_query_arg()
但没有找到关于如何提取参数的任何示例。提前感谢您的帮助。
为什么不直接使用 WordPressget_query_var()
功能?WordPress 代码参考
// Test if the query exists at the URL
if ( get_query_var('ppc') ) {
// If so echo the value
echo get_query_var('ppc');
}
由于 get_query_var 只能访问 WP_Query 可用的查询参数,为了访问像“ppc”这样的自定义查询变量,您还需要在插件中注册此查询变量或functions.php
在初始化期间添加一个操作:
add_action('init','add_get_val');
function add_get_val() {
global $wp;
$wp->add_query_var('ppc');
}
或者通过向 query_vars 过滤器添加一个钩子:
function add_query_vars_filter( $vars ){
$vars[] = "ppc";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
通过 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 参数的阅读,你应该看看: http: //php.net/manual/en/reserved.variables.get.php
编辑:我看到这个答案在做出几年后仍然有很多流量。请阅读此答案所附的评论,尤其是来自@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 ] ) );
}
这是函数中发生的事情
这里发生了三件事。
所有这些信息以及有关该功能背后思想的更多信息都可以在此链接上找到https://www.intechgrity.com/correct-way-get-url-parameter-values-wordpress/
在回调函数中,使用 $request 参数
$parameters = $request->get_params();
echo $parameters['ppc'];