Ip2Location插件在我的模板标题中?

时间:2018-08-24 作者:Debanjan Ghosh

我正在使用Ip2location插件将基于Ip地址的状态数据拉入我的帖子。

这很容易,您可以安装插件,然后在帖子或页面编辑器中使用{ip:regionName}。

但我想在标题旁边的模板头文件中打印此信息

这可能吗?如果可能,我该怎么做?

这是php头在模板中的样子

        <?php

$def_header_text = esc_html__( \'This is Header Media Text.\', \'cleanportfolio\' );

if ( current_user_can( \'edit_theme_options\' ) ) {
    $def_header_text .= \'&nbsp;\' . esc_html__( \'Edit this from Appearance - Customize - Header Media - Header Media Text.\', \'cleanportfolio\' );
}

$header_media_text = get_theme_mod( \'cleanportfolio_header_media_text\', $def_header_text );

if ( is_front_page() && ( has_custom_header() || \'\' !== $header_media_text ) ) : ?>
    <div class="custom-header">
        <?php
        if ( has_custom_header() ) : ?>
            <div class="custom-header-media">
                <?php the_custom_header_markup(); ?>
            </div>
        <?php endif; ?>

        <div class="custom-header-content sections header-media-section">
        <?php if ( \'\' !== $header_media_text ) : ?>
            <h2 class="section-title"><?php echo esc_html( $header_media_text ); ?></h2>
        <?php endif; ?>
        </div>
        <?php if ( ! has_custom_header() ) : ?>
            <div class="square"><?php echo cleanportfolio_get_svg( array(
                \'icon\' => \'square\',
            ) ); ?><span class="screen-reader-text"><?php esc_html_e( \'Square\', \'cleanportfolio\' ); ?></span></div>
        <?php endif; ?>

    </div><!-- .custom-header -->
这就是ip2location如何在PHP中使用there服务

https://www.ip2location.com/developers/php

我不是一个全职的程序员,任何关于如何尝试的例子都会很有帮助。

Error on cell Phone data

谢谢你的建议@nmr,我在其他插件上发现了很多bug,所以我决定修复它们,看看它是否能使ip2location工作,但它没有。

Wifi / ethernet Connection: (This works great)

2018-08-31 17:39:53 Lookup by BIN database.
2018-08-31 17:39:53 Geolocation result for [66.219.198.137] found: Array
(
    [ipNumber] => 1121699465
    [ipVersion] => 4
    [ipAddress] => 66.219.198.137
    [countryName] => United States
    [countryCode] => US
    [cityName] => Lehi
    [regionName] => Utah
)

Cell Phone LTE Data Connection: (This Dosen\'t work )

2018-08-31 17:40:04 Lookup by BIN database.
2018-08-31 17:40:31 Lookup by BIN database.
2018-08-31 17:40:31 Geolocation result for [127.0.0.1] found: Array
(
    [ipNumber] => 2130706433
    [ipVersion] => 4
    [ipAddress] => 127.0.0.1
    [countryName] => -
    [countryCode] => -
    [cityName] => -
    [regionName] => -
)

1 个回复
最合适的回答,由SO网友:nmr 整理而成

我想你在用"IP2Location Tag Wordpress Plugin".

在IP2Location插件的主文件中,创建类实例并将其分配给变量。

$ip2location\\u tags=新IP2LocationTags();

要在主题中使用插件,只需使用全局变量$ip2location_tags. 记住要确保IP2LocationTags 首先存在并使用global 关键字。

if (class_exists(\'IP2LocationTags\')) {
    global $ip2location_tags;
    $location = $ip2location_tags->get_location(\'IP_ADDRESS\');
}
插件以这种方式设置IP地址(在parse_content 方法):

$ip_address = $_SERVER[\'REMOTE_ADDR\'];

if (isset($_SERVER[\'HTTP_X_FORWARDED_FOR\']) && filter_var($_SERVER[\'HTTP_X_FORWARDED_FOR\'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
    $ip_address = $_SERVER[\'HTTP_X_FORWARDED_FOR\'];
}
位置数据表中的键:

ipAddress、
countryCode、
countryName、
regionName、
cityName、
纬度、
经度、
isp、
域名、
zipCode、
时区、
netSpeed、
iddCode、
地区代码、
weatherStationCode、
weatherStationName、
mcc、
mnc、
MobileCarrieName、
elevation、
usageType、,

<小时>英寸functions.php 文件添加功能:

if ( !function_exists( \'ip2loc_get_region\' ) ) {
    function ip2loc_get_region() {
        global $ip2location_tags;

        if ( !class_exists(\'IP2LocationTags\') )
            return \'\';

        $ip_address = $_SERVER[\'REMOTE_ADDR\'];

        if (isset($_SERVER[\'HTTP_X_FORWARDED_FOR\']) && filter_var($_SERVER[\'HTTP_X_FORWARDED_FOR\'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
            $ip_address = $_SERVER[\'HTTP_X_FORWARDED_FOR\'];
        }

        $location = $ip2location_tags->get_location($ip_address);
        if ( !$location )
            return \'\';

        return $location[\'regionName\'];
    }
}
文件header.php:

<?php

$def_header_text = esc_html__( \'This is Header Media Text.\', \'cleanportfolio\' );

if ( current_user_can( \'edit_theme_options\' ) ) {
    $def_header_text .= \'&nbsp;\' . esc_html__( \'Edit this from Appearance - Customize - Header Media - Header Media Text.\', \'cleanportfolio\' );
}

$header_media_text = get_theme_mod( \'cleanportfolio_header_media_text\', $def_header_text );

if ( is_front_page() && ( has_custom_header() || \'\' !== $header_media_text ) ) : ?>

    <?php // text to display
    $region_name = " " . ip2loc_get_region(); ?>

    <div class="custom-header">
        <?php
        if ( has_custom_header() ) : ?>
            <div class="custom-header-media">
                <?php the_custom_header_markup(); ?>
            </div>
        <?php endif; ?>

        <div class="custom-header-content sections header-media-section">

        <?php if ( \'\' !== $header_media_text ) : ?>
            <h2 class="section-title"><?php echo esc_html( $header_media_text ) . esc_html($region_name); ?></h2>
        <?php endif; ?>

        </div>
        <?php if ( ! has_custom_header() ) : ?>
            <div class="square"><?php echo cleanportfolio_get_svg( array(
                \'icon\' => \'square\',
            ) ); ?><span class="screen-reader-text"><?php esc_html_e( \'Square\', \'cleanportfolio\' ); ?></span></div>
        <?php endif; ?>

    </div><!-- .custom-header -->

结束

相关推荐

Custom templates vs page-slug

我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢