WordPress에 PHP 페이지를 추가하려면 어떻게해야합니까?


263

전체 사이트 CSS / 테마 / 디자인의 일부를 유지하면서 내 PHP 코드를 실행할 WordPress 블로그 용 사용자 정의 페이지를 만들고 싶습니다.

PHP 코드는 타사 API를 사용하므로 다른 PHP 파일을 포함시켜야합니다.

어떻게하면 되나요?

주의 : WordPress API와 상호 작용할 필요가 없습니다. 특정 PHP 라이브러리를 포함하는 것 외에도 WordPress 페이지에 포함하려는 PHP 코드에 다른 종속성이 없어야합니다. 따라서 WordPress API를 배우지 않아도되는 솔루션이 가장 좋습니다.


당신은 그 플러그인을 사용할 수 있습니다 : wordpress.org/extend/plugins/exec-php 또는 wordpress.org/extend/plugins/php-code-widget 그것이 도움이 되기를 바랍니다!
Michaël

답변:


400

API와 상호 작용하거나 플러그인을 사용할 필요가 없습니다.

먼저 post.php또는 page.php테마 폴더 (아래 /wp-content/themes/themename/)를 복제 하십시오 .

새 파일의 이름을 templatename.php(여기서 templatename은 새 템플릿이라고 부릅니다) 사용 가능한 템플리트 목록에 새 템플리트를 추가하려면 새 파일 맨 위에 다음을 입력하십시오.

<?php
/*
Template Name: Name of Template
*/
?>

PHP를 사용하여이 파일을 수정하여 다른 파일이나 필요한 것을 포함시킬 수 있습니다.

그런 다음 WordPress 블로그에서 새 페이지를 작성하면 페이지 편집 화면 의 속성 위젯에 템플리트 드롭 다운 이 오른쪽에 표시됩니다. 새 템플릿을 선택하고 페이지를 게시하십시오.

새 페이지는에 정의 된 PHP 코드를 사용합니다 templatename.php

출처 : 글로벌 사용을위한 사용자 정의 페이지 템플리트 작성


20
주석이 포함 된 파일을 만들 때까지 템플릿 옵션을 사용할 수 없었습니다. 그런 다음 템플릿 옵션이 나타납니다. 니스-짧은 코드를 사용하려고했지만 훨씬 쉽습니다.
Dave Hilditch

1
PHP를 게시하기 위해 플러그인을 사용하면 단점이 있습니까?
Suhail Gupta

1
브라우저가 페이지를 볼 때 페이지는 http 요청 인 페이지입니다. 그렇습니다.
Adam Hopkinson

3
@DamianGreen이 질문은 완전 자동화 된 방법을 요구하지 않으며 실제로 WP API를 피하기위한 선호를 보여줍니다
Adam Hopkinson

3
이 답변은 기존 테마 요소를 재사용하지 않고 복사하여 붙여 넣기 때문에 잘못 느낍니다 (2 항). 테마가 제 3 자에 의해 제공되는 경우, 사용자 정의 템플리트에 종속되지 않는 테마 업데이트가 수신 될 수 있습니다. 또한 사이트의 모양과 느낌을 변경하는 데 복잡성을 더하고 테마를 변경하면 사용자 정의 페이지를 다시 작성해야합니다. 이 두 가지 이유로 플러그인이 더 좋지 않습니까? 질문을 읽는 방식에서 OP는 테마 요소 "타사 API 사용"이
Philip Couling

29

자신의 .php 파일을 만들고 404 헤더없이 WordPress와 상호 작용하고 현재의 퍼머 링크 구조를 유지 하려면 해당 페이지에 대한 템플릿 파일이 필요하지 않습니다 .

이 접근 방식이 .php 파일에서 가장 효과적이라는 것을 알았습니다.

<?php
    require_once(dirname(__FILE__) . '/wp-config.php');
    $wp->init();
    $wp->parse_request();
    $wp->query_posts();
    $wp->register_globals();
    $wp->send_headers();

    // Your WordPress functions here...
    echo site_url();
?>

그런 다음이 후에 WordPress 기능을 간단히 수행 할 수 있습니다. 또한 이것은 .php 파일이 파일이있는 WordPress 사이트의 루트 내에 있다고 가정합니다 wp-config.php.

이것은 WordPress가 당신에게 WordPress 기능을 통합하는 데 사용해야하는 접근법이라고 말하면서도 가장 오랫동안 사용 했던 귀중한 발견입니다 require_once(dirname(__FILE__) . '/wp-blog-header.php');.404 헤더를 발생시키는 것을 제외하고는 그들이 원할 것입니다. 이 방법을 사용하십시오. 웹 사이트와 WordPress 통합

나는 많은 사람들 이이 질문에 대답했다는 것을 알고 있으며 이미 받아 들여진 대답을 가지고 있지만 다음은 WordPress 사이트의 루트 (또는 기술적으로 원하는 위치)에서 .php 파일에 대한 좋은 접근 방식입니다. 404 헤더없이로드하고로드하십시오!


업데이트 : wp-blog-header.php404 헤더없이 사용하는 방법 이 있지만 헤더를 수동으로 추가해야합니다. 다음과 같은 것이 WordPress 설치 루트에서 작동합니다.

<?php
    require_once(dirname(__FILE__) . '/wp-blog-header.php');
    header("HTTP/1.1 200 OK");
    header("Status: 200 All rosy");

    // Your WordPress functions here...
    echo site_url();
?>

이 접근 방식에 필요한 코드는 조금만 업데이트하면되지만 어느 것을 사용 하느냐에 달려 있습니다.


1
그러나 404 헤더가 발생 하며이 페이지 상단에서를 사용하여 새 다중 사이트를 활성화 할 때 Wordpress 다중 사이트 파일에서도 wp-activate.php404 헤더를 비활성화 해야합니다. $wp_query->is_404 = falserequire( dirname( __FILE__ ) . '/wp-blog-header.php' );
Solomon Closson

2
문제를 재현 할 수없는 방법을 이해하지 못합니다. 재생성하는 것은 매우 간단합니다. .php 파일을 생성하는 것보다 Wordpress를 설치하기 만하면 브라우저 검사기 도구에서 404 헤더를 보는 것보다 codex.wordpress.org/Integrating_WordPress_with_Your_Website에wp-blog-header.php 정의 된 방법을 사용 하십시오.
Solomon Closson 2012 년

1
다음은이 문제를 집중적으로 조사하는 동안 놓친 경우를 대비하여이 문제를 문서화 한 웹 페이지입니다. cooltrainer.org/…
Solomon Closson

1
헤더 문제는 최신 버전의 WordPress에서 발생하는 문제이며, 처음 주석에서 제안한 것과 정확히 같습니다. '실패하지 않음'과 같은 단어를주의해서 사용하십시오. :)
DrewT

1
이것은 문제에 대한 매우 부적절한 접근 방식입니다. 이 경로를 사용하면 WP가 부트 스트랩을 변경하지 않는 한 작동하는 솔루션을 작성하게됩니다. 이 작업을 수행하기 위해 (쉽게) 수행 할 수있는 후크를 활용해야합니다.
로렌스 존슨

13

나와 같은 경우 CMS에없는 페이지에서 WordPress 기능을 참조하려는 경우가 있습니다. 이러한 방식으로 백엔드 별 상태로 유지되며 클라이언트가 실수로 삭제할 수 없습니다.

wp-blog-header.phpPHP를 사용 하여 파일을 포함시키는 것만으로도 실제로 간단합니다 require().

다음은 쿼리 문자열을 사용하여 모든 게시물에 대한 Facebook OG ( Facebook Open Graph ) 데이터 를 생성하는 예입니다 .

OG 데이터를 생성하려는 게시물의 ID는 http://example.com/yourfilename.php?1어디에서 와 같은 링크의 예를 들어보십시오 1.

이제 yourfilename.php편의상 루트 WordPress 디렉토리에 내용이 있습니다.

<?php
    require( dirname( __FILE__ ) . '/wp-blog-header.php' );

    $uri = $_SERVER['REQUEST_URI'];
    $pieces = explode("?", $uri);
    $post_id = intval( $pieces[1] );

    // og:title
    $title = get_the_title($post_id);

    // og:description
    $post = get_post($post_id);
    $descr = $post->post_excerpt;

    // og:image
    $img_data_array = get_attached_media('image', $post_id);
    $img_src = null;
    $img_count = 0;

    foreach ( $img_data_array as $img_data ) {
        if ( $img_count > 0 ) {
            break;
        } else {
            ++$img_count;
            $img_src = $img_data->guid;
        }
    } // end og:image

?>
<!DOCTYPE HTML>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=yes" />
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:description" content="<?php echo $descr; ?>" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:url" content="<?php echo site_url().'/your_redirect_path'.$post_id; ?>" />
<meta property="og:image" content="<?php echo $img_src; ?>" />
<meta property="og:site_name" content="Your Title" />
</html>

게시물의 실제 이미지, 발췌 및 제목을 사용하여 모든 게시물에 대한 공유 모델을 생성했습니다!

특수 템플릿을 생성하고이를 위해 퍼머 링크 구조를 편집 할 수 있었지만 한 페이지에만 필요하고 클라이언트가 CMS 내에서 삭제하지 않기를 원하기 때문에 더 깔끔한 옵션처럼 보였습니다.


편집 2017 : 이 접근법은 이제 더 이상 사용되지 않습니다.

2016+ 이상의 WordPress 설치는 WordPress 에 PHP 페이지를 추가하는 방법을 참조하십시오 . 페이지 데이터를 브라우저에 출력하기 전에 포함 할 추가 매개 변수입니다.



5

WordPress 테마 외부에 PHP 페이지를 추가해야하는 경우 어떤 답변도 다루지 않았습니다. 이게 방법이야.

wp-load.php를 포함해야합니다.

<?php require_once('wp-load.php'); ?>

그런 다음 해당 페이지의 모든 WordPress 기능을 사용할 수 있습니다.


이 아이디어는 나에게 매우 유용했습니다. 그러나 체크 아웃 이 게시물 사용에 대한을 require_once('wp-load.php');올바르게
optimiertes

1

my-page.php라는 페이지를 만들고 테마 디렉토리에 저장하십시오. 이제이 PHP 파일을 편집하고 페이지 맨 위에 다음 줄을 작성하십시오.

<?php /* Template Name: My Page */ ?>

사용자 정의 페이지 정의 행에 PHP 코드를 작성하면이 파일 내의 다른 WP 템플릿 함수를 호출 할 수 있습니다.

<?php require_once("header.php");?>OR 처럼 시작

레이아웃을 일관되게 유지하기 위해 머리글과 바닥 글을 통합하는 방법에 관계없이

이 페이지는 내 페이지이므로 WordPress 관리자 패널에서 페이지를 만들어야합니다. 관리자 => 페이지 => 새로 추가로 이동하십시오.

사용자 정의 페이지를 코딩 한 방법에 따라 페이지 제목을 추가하고 페이지 본문 (설명)도 추가 할 수 있습니다. 사용자 정의 PHP 페이지에 작성된 설명은 완전히 건너 뛸 수 있습니다.

오른쪽에서 템플릿을 선택합니다. 드롭 다운에서 내 사용자 정의 페이지를 선택하십시오. 당신 준비 다 됐어요! [wordpress] [1]에 의해 생성 된 슬러그 (permalink)로 이동하여 페이지를보십시오.


1

가장 좋은 방법은에 워드 프레스에서 PHP 페이지를 추가하는 Page Templatechild-theme폴더.

Page TemplateWordPress 에서 작성하는 방법

라는 파일을 작성 template-custom.php하고에 넣으십시오 /wp-content/theme/my-theme/.

<?php
 /*
 * Template Name: Custom Template
 * Custom template used for custom php code display
 * @package   Portafolio WordPress Theme
 * @author    Gufran Hasan
 * @copyright Copyright templatecustom.com
 * @link      http://www.templatecustom.com
 */
?>
<?php get_header(); ?>
<?php
  //write code here

 ?>

<?php get_footer(); ?>

상세 사항은


1

WordPress의 플러그인 API를 살펴보고 싶을 것입니다.

여기에서는 WordPress 역학의 다른 부분에 "후크"및 "필터"하는 방법에 대해 설명하므로 언제 어디서나 사용자 정의 PHP 코드를 거의 실행할 수 있습니다. 이 후킹, 필터링 및 사용자 정의 코드 작성은 모든 테마의 functions.php 파일에서 수행 할 수 있습니다. 행복한 코딩 :)


그래도 Wordpress API 자체와 상호 작용하고 싶지는 않습니다. 내 PHP 코드는 WP shenanigans와 완전히 독립적입니다. 그러나 외부 PHP 파일을 참조해야합니다. 이 경우 API를 알아야하는 것이 확실합니까?
rutherford

그것은 모두 당신이하려는 일에 달려 있습니다. API를 사용하면 어떤 경우에는 도움이되고 다른 경우에는 전혀 필요하지 않을 수 있습니다. 그것은 모두 달성하려는 것에 달려 있습니다. @adam의 제안에 따라 페이지 템플릿을 사용하거나 모든 사용자 정의 코드를 한 바구니에 보관 한 다음 WordPress의 다른 부분에 후크 / 필터링 할 수 있습니다. 나는 모든 것을 말하고 최선을 다하는 것과 편안하다고 느끼는 것을 선택합니다. 이 세 가지 답변은 모두 원하는 형태로 달성 할 수 있습니다.
hsatterwhite

1

WordPress API를 다루고 싶지 않다면 Adam의 대답이 실제로 가장 좋습니다.

API를 다루고 싶다면 "템플릿 리디렉션"훅에 연결하는 것이 좋습니다. 이렇게하면 특정 URL이나 페이지를 WordPress에 계속 액세스하면서 임의의 PHP 파일로 지정할 수 있습니다.


1

Adam Hopkinson 이 널리 받아 들인 대답 은 완전히 자동화 된 페이지 작성 방법이 아닙니다! 사용자가 WordPress의 백엔드 (wp-admin 대시에서)에 페이지를 수동으로 작성해야합니다. 문제는 좋은 플러그인은 완전히 자동화 된 설정을 가져야한다는 것입니다. 클라이언트가 수동으로 페이지를 작성하지 않아도됩니다.

또한 여기에서 널리 인정되는 다른 답변 중 일부는 WordPress 외부에 정적 페이지를 작성하는 것입니다. 여기에는 주제 헤더 및 바닥 글을 달성하기 위해 WordPress 기능 중 일부만 포함됩니다. 이 방법은 경우에 따라 작동하지만 모든 기능을 포함하지 않고 이러한 페이지를 WordPress와 통합하는 것은 매우 어려울 수 있습니다.

완전히 자동화 된 최상의 방법은 페이지를 사용하여 페이지를 만들어 wp_insert_post데이터베이스에 저장하는 것입니다. 이에 대한 예와 훌륭한 토론 및 사용자가 페이지를 실수로 삭제하는 것을 방지하는 방법은 wordpress-automatically-creating-page 에서 찾을 수 있습니다.

솔직히, 나는이 접근법이이 대중적인 질문에 대한 답변으로 아직 언급되지 않은 것에 놀랐습니다 (7 년 동안 게시되었습니다).


1
위의 답변을 작성한 직후, 사용자의 의도가 페이지의 내용에 PHP를 포함시킬 수 있다는 것을 깨달았습니다.이 접근법은 분명히 그것을 허용하지 않습니다. PHP는 컨텐츠를 생성하는 데만 사용될 수 있으며 컨텐츠에 포함되지 않으므로 페이지는 동적이 아니라 정적으로 저장됩니다. 그러나 페이지와 페이지의 내용 (페이지 ID를 제공하여)을 호출 할 때마다 다시 작성하여 페이지에 동적 모양을 제공 할 수 있습니다. 귀하의 플러그인을 처리 할시기와 방법이 아마 $ _SERVER [ "REQUEST_URI"] 모니터링에 의해 발생
데미안 그린

2
귀하의 답변에서 사용자가 실수로 삭제하는 것을 방지하는 것에 대해 이야기합니다. 어떻게합니까?
GJ

0

이 시도:

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */

0

사용자 정의 템플리트 파일을 작성하고 해당 템플리트를 페이지에 지정하는 것 외에도 (예 : 승인 된 답변의 예에서와 같이) WordPress에서 템플리트를로드하는 데 사용하는 템플리트 이름 지정 규칙 (템플릿 계층 구조)도 있습니다.

새 페이지를 작성하고 템플리트 파일 이름으로 해당 페이지의 슬러그를 사용하십시오 ( page- {slug} .php 라는 템플리트 파일 작성 ). 워드 프레스는이 규칙에 맞는 템플릿을 자동으로로드합니다.


0

page-mytitle.php현재 테마의 폴더에 파일을 작성 하고 대시 보드에서 "mytitle" 페이지를 작성하십시오 .

그런 다음 URL로 페이지를 호출하면 page-mytitle.php가 표시됩니다. 이 PHP 파일 ( page-mytitle.php) 에 HTML, CSS, JavaScript, wp-loop 등을 추가해야합니다 .


0

(/ wp-content / themes / your_active_theme /) 와 같은 활성 테마 폴더 아래에 php 파일 을 추가 한 다음 wp-admin에서 새 페이지를 추가하고 페이지 템플릿 옵션에서이 페이지 템플릿을 선택할 수 있습니다.

<?php
/*
 Template Name: Your Template Name
 */
?>

그리고 당신이 functions.php에 파일을 포함시키고 그로부터 짧은 코드를 만든 다음 페이지에 그 짧은 코드를 넣을 수있는 다른 방법이 있습니다.

// CODE in functions.php 

function abc(){
 include_once('your_file_name.php');
}
add_shortcode('abc' , 'abc');

그런 다음이 단축 코드를 wp-admin 사이드 페이지에서 [abc] 와 같이 사용할 수 있습니다 .


-2
<?php /* Template Name: CustomPageT1 */ ?>

<?php get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <?php
        // Start the loop.
        while ( have_posts() ) : the_post();

            // Include the page content template.
            get_template_part( 'template-parts/content', 'page' );

            // If comments are open or we have at least one comment, load up the comment template.
            if ( comments_open() || get_comments_number() ) {
                comments_template();
            }

            // End of the loop.
        endwhile;
        ?>

    </main><!-- .site-main -->

    <?php get_sidebar( 'content-bottom' ); ?>

</div><!-- .content-area -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

-2

파일 이름을 "newpage.php"로 지정할 수 있습니다 wp-content. 의 테마 디렉토리에 넣으십시오 . 페이지 템플리트 ( http://codex.wordpress.org/Pages .. 참조 )로 만들거나 header.php 또는 single.php와 같은 테마의 PHP 파일 중 하나에 포함시킬 수 있습니다.

더 나은 방법으로, 하위 테마를 작성하여 거기에 배치하면 테마 코드를 그대로두고 업데이트하기가 더 쉽습니다.

http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates


링크가 끊어졌습니다. 링크가 두 번 리디렉션되며 "자신의 페이지 템플릿 만들기" 라는 하위 섹션이 없습니다 . 가장 가까운 섹션은 " 페이지 템플릿 " 하위 섹션 일 수도 있고 아닐 수도 있습니다 . 별도의 페이지는 (같은 이름)도있다 페이지 템플릿
피터 모텐슨

-5

PHP 페이지를 작성하고 전체 경로로 실행하는 것과 같이 PHP 페이지를 직접 사용할 수도 있습니다.

http : //localhost/path/filename.php 와 같이


그러나 번역 기능이 작동하지 않으므로 어떤 이유로로드되지 않습니다.
ram4nd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.