wpbones / geolocalizer
WP Bones 的地理服务提供者
1.0.0
2024-09-19 17:08 UTC
README
Geo Localizer 为 WordPress/WP Bones 提供一组地理定位管理工具
要求
此包与使用 WP Bones 框架库 编写的 WordPress 插件兼容。
安装
您可以使用以下命令安装第三方包
php bones require wpbones/geolocalizer
我建议使用此命令而不是 composer require
,因为这样做将自动重命名。
您可以使用 composer 安装此包
composer require wpbones/geolocalizer
您也可以在您的插件 composer.json
文件中添加 "wpbones/geolocalizer": "^1.0"
"require": { "php": ">=7.4", "wpbones/wpbones": "~0.8", "wpbones/geolocalizer": "~1.0" },
并运行
composer install
或者,您可以从您的 WP Bones 插件中获取单个文件 src/resources/assets/js/actions-and-filters.js
并使用 gulp
编译它。您还可以获取预编译的压缩版本 src/public/js/actions-and-filters.min.js
。
迁移
在 database/migrations
中,您将找到用于国家的基本迁移数据库表。此外,在 database/seeders
中,您可以找到国家数据库表的数据。
无论如何,您只需将这些文件夹复制到您的插件 database/
文件夹中。
地理服务
此版本使用 IPStack 服务来获取国家代码和其他数据。您必须在 IPStack 中创建一个帐户并获取您的 API 密钥。在您的插件中,您可以使用过滤器通过以下方式使用 API 密钥
add_filter('wpbones_geolocalizer_ipstack_api_key', function () { // get your api key rom your settings // for example, MyPlugin::$plugin->options->get('General/ipstack_api_key'); return $your_api_key; });
测试
为了检查您的 API 密钥是否有效,您可以使用以下命令
$info = MyPlugin\GeoLocalizer\GeoLocalizerProvider::geoIP();
您应该收到从您的 IP 地址开始的所有信息。否则,您将从 IPStack 服务收到错误。
短代码
Geolocalizer 提供了短代码方法。您可以在您的短代码提供者类中定义自己的短代码
use WPMyPlugin\WPBones\Foundation\WordPressShortcodesServiceProvider as ServiceProvider; use WPMyPlugin\GeoLocalizer\GeoLocalizerProvider; class WPMyPluginShortcode extends ServiceProvider { /** * List of registred shortcodes. {shortcode}/method * * @var array */ protected $shortcodes = [ 'my_shortocde_geo' => 'my_shortocde_geo', ]; public function my_shortocde_geo( $atts = [], $content = null ) { return GeoLocalizerProvider::shortcode( $atts, $content ); }
然后您可以使用
[my_shortocde_geo city="Rome"] Only for Rome [/my_shortocde_geo]
[my_shortocde_geo city="rome"] Only for Rome [/my_shortocde_geo]
[my_shortocde_geo city="rome,london"] Only for Rome and Landon [/my_shortocde_geo]
[my_shortocde_geo region_name="lazio"] Only for region (Italy) Lazio [/my_shortocde_geo]
[my_shortocde_geo country_code="IT"] Italian only [/my_shortocde_geo]
[my_shortocde_geo country_name="italy"] Italian only [/my_shortocde_geo]
[my_shortocde_geo zip_code="00137"] Wow [/my_shortocde_geo]
[my_shortocde_geo ip="80.182.82.82"] Only for me [/my_shortocde_geo]
[my_shortocde_geo time_zone="europe\rome"] Rome/Berlin time zone [/my_shortocde_geo]