programing

WordPress 페이지 및 게시물에 PHP 코드 삽입

yellowcard 2023. 3. 16. 21:17
반응형

WordPress 페이지 및 게시물에 PHP 코드 삽입

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는 쇼트 코드가 없는 한 기본적으로 포스트/페이지 콘텐츠에서 PHP를 실행하지 않습니다.

가장 빠르고 쉬운 방법은 PHP를 포스트 콘텐츠에 삽입하여 실행할 수 있는 플러그인을 사용하는 것입니다.

플러그인 없이 이를 실현하는 다른 두 가지 "빠르고 쉬운" 방법이 있습니다.

  • 쇼트 코드(입력)로 합니다.functions.php국가명을 그대로 반영하도록 하는 것은 매우 간단합니다.여기를 참조해 주세요.WP Codex의 쇼트코드 API

  • 템플릿 파일에 저장 - 기본 페이지 템플릿을 기반으로 해당 페이지의 커스텀 템플릿을 만들고 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' );

쇼트 코드를 참조해 주세요.API.

설명:

PHP 코드를 post 또는 page 내에서 실행하는 절차는 3가지입니다.

  1. functions.php파일(테마에서) 새 기능 추가

  2. functions.phpfile (테마에서) 함수를 호출하는 새로운 쇼트 코드를 등록합니다.

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: 루프에 사용합니다.

기능:

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 

제가 비슷한 일을 하려고 했을 때, 저는 결국 다음과 같은 일을 하게 되었습니다.

wp-content/syslog/syslogs/syslogs.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
    }
}

언급URL : https://stackoverflow.com/questions/18896146/insert-php-code-in-wordpress-page-and-post

반응형