web-dev-qa-db-ja.com

PHPコードをWordPressページに挿入して投稿する

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'];
34
Prince

WordPressは、ショートコードがない限り、デフォルトで投稿/ページコンテンツでPHPを実行しません。

これを行う最も簡単で簡単な方法は、投稿コンテンツに埋め込まれたPHPを実行できるプラグインを使用することです。

プラグインなしでそれを達成するための2つの「迅速で簡単な」方法があります。

  • それをショートコードにするfunctions.phpに入れて国名をエコーさせる)これは非常に簡単です-ここを参照してください: WP CodexのショートコードAPI

  • テンプレートファイルに入れます-デフォルトのページテンプレートに基づいてそのページのカスタムテンプレートを作成し、PHPを投稿コンテンツではなくテンプレートファイル: カスタムページテンプレート

55
Ennui

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 を参照してください。

13
Dinesh

このために別のページテンプレートを作成するか、このプラグインを使用できます 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
    }
}
2
John Langford