gpt4 book ai didi

php - 如何使用 WordPress 在 URL 中传递额外的变量

转载 作者:IT老高 更新时间:2023-10-28 12:01:09 25 4
gpt4 key购买 nike

我在尝试将 url 中的额外变量传递给我的 WordPress 安装时遇到问题。

例如 /news?c=123

由于某种原因,它仅适用于网站根 www.example.com?c=123 但如果 url 包含更多信息 www.example.com 则它不起作用/news?c=123。我在主题目录的functions.php文件中有以下代码。

if (isset($_GET['c'])) 
{
setcookie("cCookie", $_GET['c']);
}

if (isset($_SERVER['HTTP_REFERER']))
{
setcookie("rCookie", $_SERVER['HTTP_REFERER']);
}

有什么想法吗?

最佳答案

要在“前端”上实现往返“WordPress 方式”(在 wp-admin 的上下文中不起作用),您需要使用 3 个 WordPress 函数:

  • add_query_arg() - 使用您的新查询变量(在您的示例中为“c”)创建 URL
  • query_vars filter - 修改public query variables的列表WordPress 知道的(这只适用于前端,因为后端不使用 WP 查询 - wp-admin - 所以这在 admin-ajax 中也不可用)
  • get_query_var() - 检索在您的 URL 中传递的自定义查询变量的值。

注意:如果你这样做,甚至不需要触摸超全局变量 ( $_GET )。

示例

在需要创建链接/设置查询变量的页面上:

如果是返回此页面的链接,只需添加查询变量

<a href="<?php echo esc_url( add_query_arg( 'c', $my_value_for_c ) )?>">

如果它是指向其他页面的链接

<a href="<?php echo esc_url( add_query_arg( 'c', $my_value_for_c, site_url( '/some_other_page/' ) ) )?>">

在您的functions.php,或一些插件文件或自定义类(仅限前端)中:

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

在您希望检索和使用 URL 中设置的查询变量的页面/函数上:

$my_c = get_query_var( 'c' );

在后端 (wp-admin)

在后端我们从不运行 wp() ,因此主 WP 查询不会运行。结果,没有query varsquery_vars钩子(Hook)没有运行。

在这种情况下,您需要恢复使用更标准的方法来检查您的 $_GET。超全局。最好的方法可能是:

$my_c = filter_input( INPUT_GET, "c", FILTER_SANITIZE_STRING );

虽然在紧要关头你可以尝试和真实

$my_c = isset( $_GET['c'] ? $_GET['c'] : "";

或其一些变体。

关于php - 如何使用 WordPress 在 URL 中传递额外的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com