在 functions.php 中插入 PHP 文件,然后在 Wordpress 中回显该文件中的变量

问题描述 投票:0回答:1

在尝试找到解决方案之后,我觉得我不够聪明。所以,请帮忙。 这里的想法是:有一个文件(ip.php)检测访问者的国家/城市,在 functions.php(或 header.php)中调用一次,然后将这个 ip.php 文件中的变量回显/打印到另一个 Wordpress 主题中文件(例如 footer.php)。 这是 ip.php 内容:

<?php
function getUserIP()
{
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
              $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
              $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }
    return $ip;
}
$user_ip = getUserIP();
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;
$cityDbReader = new Reader('/html/nocache-ip/GeoLite2-City.mmdb');
$record = $cityDbReader->city($user_ip);
$country = $record->country->name;
?>

在 header.php 中使用以下内容可以很好地处理标题:

require_once( ABSPATH . '/nocache-ip/ip.php' );
echo "\nYou came from $country\n";

显示国家、城市名称。但是当尝试在 footer.php 中再次使用相同的代码时,它不起作用(Undefined variable: country)。

这就是问题所在。 我怎样才能在主题的其他部分回显/打印访问者的国家,而只调用一次 ip.php? 我读过关于必须将所有这些变成一个函数,然后以某种方式将它添加到 functions.php,然后用 country(); 调用变量的信息。不幸的是,这超出了我的理解范围。

wordpress wordpress-theming wordpress-shortcode require-once
1个回答
0
投票

您可以使用 include 以便您的功能可用,例如:

<?php include 'yourfunctionpage.php';?>

在您的 functions.php 中声明一个变量:

$var = 'yourvariable';

然后在 anotherfile.php 中,您可以像这样使用 functions.php 中的变量:

include 'functions.php';
echo $var;
© www.soinside.com 2019 - 2024. All rights reserved.