【问题标题】:get the original URL in PHP file from a Wordpress site从 Wordpress 站点获取 PHP 文件中的原始 URL
【发布时间】:2022-01-24 08:50:41
【问题描述】:

我有一个 Wordpress 网站,它有大约 100 个页面,其中包含指向非 Wordpress 网站上的联系表单的链接。

让我们打电话给我的 Wordpress 网站https://example.com。让我们调用其中一个页面https://example.com/refinance-your-home-today/

联系表单具有以下代码,其中大约 75% 的时间包含“https://example.com”作为原始 url(代码中的 client_url)。使用上面的示例,client_url 应该捕获“https://example.com/refinance-your-home-today/”。

当我使用下面的代码时,client_url 的值为 NULL:

<?php

session_start();
function wp_get_original_referer() {
if ( ! empty( $_REQUEST['_wp_original_http_referer'] ) && function_exists( 'wp_validate_redirect' ) ) {
    return wp_validate_redirect( wp_unslash( $_REQUEST['_wp_original_http_referer'] ), false );
}

return false;

}

$_SESSION['client_url'] = wp_get_original_referer();

当我使用以下代码时,client_url 只有大约 25% 的时间正确显示。它大约 75% 的时间显示为“https://example.com”:

<?php

session_start();

$_SESSION['client_url'] = $_SERVER['HTTP_REFERER'];

非常感谢任何帮助。

【问题讨论】:

  • function_exists( 'wp_validate_redirect' ) 不太可能是真的,在您的 Wordpress 代码 外部 的脚本中。而且推荐人根本不可靠,这是一个众所周知的事实 - 用户代理可能由于隐私问题而不会发送它。如果您的联系表单脚本位于同一服务器上,同一域下,您可以尝试“引导 Wordpress”(包括核心功能的加载器);否则,您可能必须在链接到联系表单脚本的位置将 URL 作为 GET 参数传递。
  • 表单不在 Wordpress 中,并且在不同的服务器上。它也在不同的域上。我会尝试 GET。感谢您的信息。

标签: php wordpress


【解决方案1】:

我找到了解决我的问题的解决方法。

在原始 URL 页面中,我将 a 标签更改为包含 client_url=(the page url).

index.php(表格的第一页)中,我添加了以下内容:

if(isset($_GET['client_url'])) {

$cu = $_GET['client_url'];

}

$_SESSION['cu'] = $_GET['client_url'];

echo $cu; // to verify the URL is being captured

然后在表单的正文中添加以下内容:

<input type="hidden" name="client_url" value="<?php echo $_SESSION['cu']; ?>">

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 2018-02-09
    • 2015-03-23
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多