在WordPress页面中插入PHP代码并发布

在WordPress页面中插入PHP代码并发布,php,wordpress,Php,Wordpress,我想知道使用PHP的访客国家,并将其显示在WordPress页面中。但当我在WordPress页面中添加PHP代码或发布时,会出现错误。 如何在WordPress页面和帖子中添加PHP代码 <?PHP try{ function visitor_country() { $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_

我想知道使用PHP的访客国家,并将其显示在WordPress页面中。但当我在WordPress页面中添加PHP代码或发布时,会出现错误。 如何在WordPress页面和帖子中添加PHP代码

  <?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不会在post/page内容中执行PHP,除非它有一个短代码

最快、最简单的方法是使用一个插件,它允许您运行嵌入到post内容中的PHP

无需插件,还有两种“快速简便”的实现方法:

  • 将其设置为短代码(将其放入
    functions.php
    并使其与国家名称相呼应),这非常简单-请参见此处:

  • 将其放入模板文件中-根据默认页面模板为该页面创建自定义模板,并将PHP添加到模板文件中,而不是帖子内容中:


您不能在WordPress后端页面编辑器中使用PHP。也许你可以使用插件,但不是现成的

最简单的解决方法是创建一个短代码。那么你可以用这样的东西

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' );
函数输入函数($atts){
提取(短码)附件(数组)(
'类型'=>'文本',
'名称'=>'',
)美元(附件);;
返回“”;
}
添加_短代码('input','input_func');

参见。

当我试图完成一些非常类似的事情时,我最终按照以下思路做了一些事情:

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

说明

在post或page中运行PHP代码有3个步骤

  • functions.php
    文件(主题中)中添加新函数

  • functions.php
    文件(在主题中)中注册调用函数的新短代码:

  • 使用新的短代码
  • 示例#1:只显示文本

    在功能方面:

    function simple_function_1() {
        return "Hello World!";
    }
    
    add_shortcode( 'own_shortcode1', 'simple_function_1' );
    
    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' );
    
    function simple_function_3($name) {
        return "Hello $name";
    }
    
    add_shortcode( 'own_shortcode3', 'simple_function_3' );
    
    在post/page中:

    [own_shortcode1]
    
    [own_shortcode2]
    
    [own_shortcode3 name="John"]
    
    [own_shortcode3]
    
    效果:

    Hello World!
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Hello John
    
    Hello 
    
    示例#2:用于循环

    在功能方面:

    function simple_function_1() {
        return "Hello World!";
    }
    
    add_shortcode( 'own_shortcode1', 'simple_function_1' );
    
    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' );
    
    function simple_function_3($name) {
        return "Hello $name";
    }
    
    add_shortcode( 'own_shortcode3', 'simple_function_3' );
    
    效果:

    Hello World!
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Hello John
    
    Hello 
    
    示例#3:使用带参数的短代码

    在功能方面:

    function simple_function_1() {
        return "Hello World!";
    }
    
    add_shortcode( 'own_shortcode1', 'simple_function_1' );
    
    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' );
    
    function simple_function_3($name) {
        return "Hello $name";
    }
    
    add_shortcode( 'own_shortcode3', 'simple_function_3' );
    
    在post/page中:

    [own_shortcode1]
    
    [own_shortcode2]
    
    [own_shortcode3 name="John"]
    
    [own_shortcode3]
    
    效果:

    Hello World!
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Hello John
    
    Hello 
    
    示例#3-不传递参数

    在post/page中:

    [own_shortcode1]
    
    [own_shortcode2]
    
    [own_shortcode3 name="John"]
    
    [own_shortcode3]
    
    效果:

    Hello World!
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Hello John
    
    Hello 
    

    这会给你什么错误?我正在使用自定义主题,我从管理后端创建了一个页面,我只想为这个页面使用不同的标题结构(页面顶部)。我不能在这里使用模板文件。我只想使用后端页面。我把一个简短的代码放在一个变量集中&checked in header.php这个值是不是得到了?因此,根据该值,我将显示本页面所需的header.php部分。但是这个变量的值变为空。请告诉我解决办法