가끔씩 페이지 컨텐츠들을 다른 포스트 내용을 가져와야할 때가 있다.
내용이 똑같은데 굳이 또 쓸필요성을 못느끼고 편리하게 가져왔으면 할때가 있는데.. 그것을 플로그인을 이용하면 참 쉽다.the Improved Include plugin, RPS Include Content 두 플러그인 중에 선택해서 사용하면 된다.

그렇지만!! 플러그인을 쓰지 않아도 숏코드로 만들어서 사용할 수 있는 방법이 있다.

1. Function.php 파일에 함수 만들기

테마안에 functions.php파일을 열어서 아래의 코드를 맨 아래에 붙여넣기 하면된다.

function cn_include_content($pid) {
    $thepageinquestion = get_post($pid);
    $content = $thepageinquestion->post_content;
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;
}

 

2. 템플릿 파일에 함수를 사용

다음은, 포함하고 싶은 특정한 파일을 열어서 다음 코드를 넣어으면 된다.

<?php cn_include_content(42); ?>

포함할 페이지 id값을 42자리에 넣으면된다.

 

3. 숏코드 만들기 (선택)

숏코드 넣는 방법이 있다. 이건 선택적이라서 하고 싶은 사람만 하면 될것이다.
우선 테마의 functions.php 파일을 열어나서 아래 파일을 추가 하면된다.

function cn_include_page( $atts, $content = null ) {
    extract(shortcode_atts(array( // a few default values
       'id' => '')
       , $atts));
       cn_include_content($id);
}
add_shortcode('includepage', 'cn_include_page');

그리고 페이지와 포스트에 다음같이 넣으면 된다.
[includepage id=”42″]

페이지에 아이디 42값이 인클루드 될 것이다.

 

PS:
ID값 보단 페이지 슬러그 값으로 하고 싶은 사람은 다음 같이 하면 된다.

function cn_include_content($page_slug) {
    $thepageinquestion = get_page_by_path($page_slug)
    $thepage = $thepageinquestion->ID;
    $content = $thepage->post_content;
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;
}

테마에서 사용하는 함수는:

<?php cn_include_content('your-slug'); ?>

이렇게 하면된다.