PHPを使用して訪問者の国を知り、WordPressページに表示したいのですが、PHPページにWordPressコードを追加するとまたは、エラーが表示されます。 PHP Page and PostにWordPressコードを追加するにはどうすればよいですか。
<?PHP
try{
function visitor_country()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = $_SERVER['REMOTE_ADDR'];
$result = "Unknown";
if(filter_var($client, FILTER_VALIDATE_IP))
{
$ip = $client;
}
elseif(filter_var($forward, FILTER_VALIDATE_IP))
{
$ip = $forward;
}
else
{
$ip = $remote;
}
$ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));
if($ip_data && $ip_data->geoplugin_countryName != null)
{
$result = array('ip'=>$ip,
'continentCode'=>$ip_data->geoplugin_continentCode,
'countryCode'=>$ip_data->geoplugin_countryCode,
'countryName'=>$ip_data->geoplugin_countryName,
);
}
return $result;
}
$visitor_details= visitor_country(); // Output Country name [Ex: United States]
$country=$visitor_details['countryName'];
WordPressは、ショートコードがない限り、デフォルトで投稿/ページコンテンツでPHPを実行しません。
これを行う最も簡単で簡単な方法は、投稿コンテンツに埋め込まれたPHPを実行できるプラグインを使用することです。
プラグインなしでそれを達成するための2つの「迅速で簡単な」方法があります。
それをショートコードにする(functions.php
に入れて国名をエコーさせる)これは非常に簡単です-ここを参照してください: WP CodexのショートコードAPI
テンプレートファイルに入れます-デフォルトのページテンプレートに基づいてそのページのカスタムテンプレートを作成し、PHPを投稿コンテンツではなくテンプレートファイル: カスタムページテンプレート
PHPバックエンドページエディターではWordPressを使用できません。たぶん、あなたはできるプラグインがありますが、箱から出してはいけません。
これに対する最も簡単な解決策は、ショートコードを作成することです。次に、このようなものを使用できます
function input_func( $atts ) {
extract( shortcode_atts( array(
'type' => 'text',
'name' => '',
), $atts ) );
return '<input name="' . $name . '" id="' . $name . '" value="' . (isset($_GET\['from'\]) && $_GET\['from'\] ? $_GET\['from'\] : '') . '" type="' . $type . '" />';
}
add_shortcode( 'input', 'input_func' );
Shortcode_API を参照してください。
このために別のページテンプレートを作成するか、このプラグインを使用できます http://wordpress.org/plugins/exec-php/
ページテンプレートを作成するのは良いオプションです。
非常によく似た何かを達成しようとしていたとき、私はこれらの線に沿って何かをすることになりました:
wp-content/themes/resources/functions.php
add_action('init', 'my_php_function');
function my_php_function() {
if (stripos($_SERVER['REQUEST_URI'], 'page-with-custom-php') !== false) {
// add desired php code here
}
}