Insert PHP code In WordPress Page and Post

I want to know the visitor country using PHP and display it in on a WordPress Page. But when I add PHP code to a WordPress page or post it gives me an error.

How can we add PHP code on WordPress pages and posts?

<?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'];

Related posts

Leave a Reply

4 comments

  1. WordPress does not execute PHP in post/page content by default unless it has a shortcode.

    The quickest and easiest way to do this is to use a plugin that allows you to run PHP embedded in post content.

    There are two other “quick and easy” ways to accomplish it without a plugin:

    • Make it a shortcode (put it in functions.php and have it echo the country name) which is very easy – see here: Shortcode API at WP Codex

    • Put it in a template file – make a custom template for that page based on your default page template and add the PHP into the template file rather than the post content: Custom Page Templates

  2. You can’t use PHP in the WordPress back-end Page editor. Maybe with a plugin you can, but not out of the box.

    The easiest solution for this is creating a shortcode. Then you can use something like this

    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' );
    

    See the Shortcode_API.

  3. Description:

    there are 3 steps to run PHP code inside post or page.

    1. In functions.php file (in your theme) add new function

    2. In functions.php file (in your theme) register new shortcode which call your function:

    add_shortcode( 'SHORCODE_NAME', 'FUNCTION_NAME' );
    
    1. use your new shortcode

    Example #1: just display text.

    In functions:

    function simple_function_1() {
        return "Hello World!";
    }
    
    add_shortcode( 'own_shortcode1', 'simple_function_1' );
    

    In post/page:

    [own_shortcode1]
    

    Effect:

    Hello World!
    

    Example #2: use for loop.

    In functions:

    function simple_function_2() {
        $output = "";
        
        for ($number = 1; $number < 10; $number++) {    
            // Append numbers to the string
            $output .= "$number<br>";
        } 
        
        return "$output";
    }
    
    add_shortcode( 'own_shortcode2', 'simple_function_2' );
    

    In post/page:

    [own_shortcode2]
    

    Effect:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    

    Example #3: use shortcode with arguments

    In functions:

    function simple_function_3($name) {
        return "Hello $name";
    }
    
    add_shortcode( 'own_shortcode3', 'simple_function_3' );
    

    In post/page:

    [own_shortcode3 name="John"]
    

    Effect:

    Hello John
    

    Example #3 – without passing arguments

    In post/page:

    [own_shortcode3]
    

    Effect:

    Hello 
    
  4. When I was trying to accomplish something very similar, I ended up doing something along these lines:

    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
        }
    }