2014-08-27 2 views
0

Wordpress CMS에 한 페이지 웹 사이트를 만들고 싶습니다. 내가 여러 페이지 유형을 가지고 있기 때문에 ID로 고정 된 페이지에 내 페이지를 연결하는 방법을 찾고 있습니다.정적 전면 페이지에서 id로 페이지 훅합니다.

$id=6; 
$post = get_post($id); 
$content = apply_filters('the_content', $post->post_content); 
echo $content; 

그러나 이것은 단지 내용과 HTML에없는 내용을 반환

은 내가 시도했습니다. 이것을 달성하는 방법에 대한 조언? 또는 Wordpress에 한 페이지짜리 웹 사이트를 만드는 다른 방법? 사전에

덕분에 HTML 제대로 출력하려면

+0

'echo $ content;'와 (과) 일치하는 내용의 코드를 붙여 넣을 수 있습니까? – ojrask

답변

0

, 관련 기능이 해당하는 문자 (예를 들어, <>)에 다시 엔티티를 변환하는 디코딩/PHP의 HTML 엔티티 인코딩을 사용해보십시오.

WordPress에는 이중 줄 바꿈 (\n)을 단락 분할로 변환하는 wpautop이라는 내부 기능이 있습니다. wp_texturize (또는 유사하게 명명 된 것)은 일부 문자를 따옴표 및 유사한 것과 같은 적절한 변형으로 변환합니다.

이 시도 :

$content = apply_filters('the_content', wpautop(wp_texturize(html_entity_decode($post -> post_content)))); 

// Note: not properly tested, but should probably output properly "HTMLized" contents. 

당신이 게시물의 내용 안에있는 HTML 태그보다는 다른 출력 뭔가 원하는 (그리고 WP - 관리자의 게시물 편집기를 사용하여 삽입), 당신은 일을해야하는 경우 테마 템플릿.

편집 :

는, 단일 페이지 웹 사이트를 만들 홈페이지로 전체 템플릿을 삽입하려면 템플릿 파일로 각 "페이지"를 만들어야합니다. front-page.php, content-about.php, content-portfolio.php 등이 있다고 가정합니다. 또한 대부분 header.phpfooter.php 일 가능성이 큽니다. 단순화 된 형태에서

의이 같은 것을 볼 수 있었다 front-end.php에 삽입 될 콘텐츠 템플릿의 각 :

<?php 

/** 
* content-about.php 
*/ 

// Get the wanted content as WP Post. 
$page_obj = get_page_by_title('About'); 
$page_content = wpautop($page_obj -> post_content); 

?> 

<article id="about"> <!-- Begin a new section for the one-page template. --> 
    <h2><?php echo $page_obj -> post_title; ?></h2> 
    <?php echo $page_content; ?> 
</article> 

추가 템플릿 (content-portfolio.php, content-contact.php 등)는 유사한 구조를 따라야합니다.

그런 다음 front-page.php에 일반적인 경우처럼 header.phpfooter.php을 포함해야합니다. 그런 다음 가져 오기 및 front-page.phpcontent-abc.php 템플릿을 표시하기 위해 호출 get_template_part 사용 inbetween : 워드 프레스와 PHP는 front-page.php 템플릿을 분석 한 후 지금

<?php 

/** 
* front-page.php 
*/ 

get_header(); ?> 

<!-- Add some markup if you want to. --> 

<?php get_template_part('content', 'about'); // 'content-about.php' ?> 
<?php get_template_part('content', 'portfolio'); // 'content-portfolio.php' ?> 
<?php get_template_part('awesometemplate'); // 'awesometemplate.php' ?> 

<!-- Add some markup if you want to. --> 

<?php get_footer(); 

을, 결과 출력은 다음과 같을 수 (각 삽입 내용에 따라 템플릿 포함) : 컨텐츠를 보유하고

<!DOCTYPE html> 

<html> 

<head> 
... 
</head> 

<body> 

    <!-- header.php visible contents here --> 

    <!-- content-about.php: --> 
    <article id="about"> 
     <h2>About</h2> 
     <p>Well hello there! This is some <em>nice</em> content from content-about.php.</p> 
    </article> 

    <!-- content-portfolio.php: --> 
    <article id="portfolio"> 
     <h2>Portfolio</h2> 
     <ul> 
      <li> 
      ... 
      </li> 
     </ul> 
    </article> 

    <!-- awesometemplate.php: --> 
    <article id="awesome"> 
     <h2>Awesome!</h2> 
     <table> 
     ... 
     </table> 
    </article> 

    <!-- footer.php visible contents here --> 

</body> 

</html> 

이제 당신이있어 분리 된 템플릿은 단일 페이지 마스터 템플릿을 만들 front-page.php에 포함됩니다. 원한다면 CSS와 JS를 사용하여 화려하게 만들 수 있습니다.

참고 : PHP의 고유 한 include 또는 require 함수를 사용하여 서브 템플릿을 front-page.php에 삽입 할 수도 있습니다.

+0

테마 템플릿을 사용하면 무엇을 의미합니까? 나는 내가 모든 템플릿을 개발 한 이후로 내가 필요한 것 같다고 생각하지만 한 페이지에 그들을 넣을 방법이 필요하다. – luukgruijs

+0

WP single.php 템플릿을 정적 홈페이지에 "포함"하고 싶습니까? – ojrask

+0

아니요, 저는 한 페이지의 WordPress 웹 사이트를 만들고 있습니다. 그들은 레이아웃이 다르기 때문에 각 섹션마다 다른 템플릿이 있습니다. 예를 들어 homepage.php, textpage.php 및 portfolio.php가 있습니다. front-page.php에 생성 된 페이지를 포함시켜 단일 페이지 웹 사이트로 보이게하고 싶습니다. – luukgruijs

0

WP_Query을 사용하여 사용자 지정 쿼리를 구성 할 수도 있습니다. Post 및 Page 매개 변수를 사용하여 프론트 페이지에 표시해야하는 페이지를 호출 할 수 있습니다.

루프 안에는 the_content과 같은 템플릿 태그를 직접 사용할 수있는 기능이 있습니다. 템플릿 태그와 HTML 구조를 조건부로 루프 내에서 is_page() 또는 is_page_template()

을 사용하여로드 할 수도 있습니다. 다음은 코덱의 예제입니다. 귀하의 필요에 맞게 수정하십시오

$the_query = new WP_Query(array('post_type' => 'post', 'post__not_in' => array(2, 5, 12, 14, 20))); 

// The Query 
$the_query = new WP_Query($args); 

// The Loop 
if ($the_query->have_posts()) { 
while ($the_query->have_posts()) { 
$the_query->the_post(); 
    the_content(); 
} 
} else { 
    // no posts found 
} 
/* Restore original Post Data */ 
wp_reset_postdata(); 
관련 문제