Insert PHP code In WordPress Page and Post-ThrowExceptions

Exception or error:

I want to know Visitor country using PHP and display it in to a WordPress Page.But when I add PHP code in WordPress page or Post it give me error.
How can we add PHP code in WordPress Page and Post.

        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;
                    $ip = $remote;

                $ip_data = @json_decode(file_get_contents("".$ip));

                if($ip_data && $ip_data->geoplugin_countryName != null)
                    $result = array('ip'=>$ip,

                return $result;

           $visitor_details= visitor_country(); // Output Country name [Ex: United States]
How to solve:

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


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.


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


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

Leave a Reply

Your email address will not be published. Required fields are marked *