42

我想知道使用 PHP 的访问者国家并将其显示在 WordPress 页面上。但是当我将 PHP 代码添加到 WordPress 页面或发布时,它会给我一个错误。

我们如何在 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'];
4

4 回答 4

62

默认情况下,WordPress 不会在帖子/页面内容中执行 PHP,除非它有短代码。

最快和最简单的方法是使用一个插件,该插件允许您运行嵌入在帖子内容中的 PHP。

还有另外两种“快速简单”的方法可以在没有插件的情况下完成它:

  • 将其设为简码(将其放入functions.php并让它回显国家名称),这很容易 - 请参见此处:WP Codex 的简码 API

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

于 2013-09-19T13:41:24.270 回答
15

您不能在 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' );

请参阅Shortcode_API

于 2013-09-19T13:44:53.670 回答
13

说明

在帖子或页面中运行 PHP 代码有 3 个步骤。

  1. functions.php文件中(在您的主题中)添加新功能

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

add_shortcode( 'SHORCODE_NAME', 'FUNCTION_NAME' );
  1. 使用您的新简码

示例 #1:仅显示文本。

在函数中:

function simple_function_1() {
    return "Hello World!";
}

add_shortcode( 'own_shortcode1', 'simple_function_1' );

在帖子/页面中:

[own_shortcode1]

影响:

Hello World!

示例 #2:使用 for 循环。

在函数中:

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

在帖子/页面中:

[own_shortcode2]

影响:

1
2
3
4
5
6
7
8
9

示例#3:使用带参数的简码

在函数中:

function simple_function_3($name) {
    return "Hello $name";
}

add_shortcode( 'own_shortcode3', 'simple_function_3' );

在帖子/页面中:

[own_shortcode3 name="John"]

影响:

Hello John

示例 #3 - 不传递参数

在帖子/页面中:

[own_shortcode3]

影响:

Hello 
于 2020-05-19T22:41:02.963 回答
3

当我试图完成一些非常相似的事情时,我最终做了这些事情:

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
    }
}
于 2017-01-30T21:20:16.190 回答