페이지 템플리트에 페이지 컨텐츠를 표시하는 방법은 무엇입니까?


13

WordPress 사이트에서 사용자 정의 페이지 템플릿을 만들었습니다. 여기에는 사용자 정의 쿼리 [using WP_Query()]가 포함되어 있습니다. 이 쿼리를 사용하면 특정 카테고리의 게시물을 완벽하게 얻을 수 있습니다. 그러나 쿼리 된 게시물과 함께 페이지 내용을 표시하고 싶습니다.

상황은 다음과 같습니다 :
---------------------------

페이지 제목

페이지 내용

쿼리 된 게시물 제목

쿼리 된 게시물 내용
---------------------------

  • 어떡해?

2
무엇이 문제입니까? 이것은 페이지 템플리트이므로 페이지 컨텐츠에 액세스 할 수 있습니다. 예를 들어 별도의 다른 쿼리를 통해 특정 게시물에 액세스 할 수 있으므로 해당 내용을 출력 할 수 있습니다. 그래서?
tfrommen

투표하기 전에 인내하십시오. 나는 그것을 위해 고군분투 한 다음 해결책을 찾았습니다. 나는 다른 사람들과 논리를 공유하기 위해 Q & A를 시도했습니다. 나는 그것을 찾고있는 방식으로 사실을 명확히 할 것이라고 생각합니다. Q & A가 당신에게 분명하기를 바랍니다.
Mayeenul Islam

첫째로, 나는 당신의 질문을 무시 하지 않았습니다 . 둘째, 지식을 공유해 주셔서 감사합니다. 그렇게하는 것이 옳습니다. 문제는이 질문 이 숙련 된 WP 사용자 / 개발자에게 해결하기가 어렵지 않고 질문 을 게시 한 사실이라는 것입니다. 처음부터 질문 및 답변을하려면 질문을 작성하는 페이지와 동일한 페이지에 답변 / 솔루션을 직접 포함하십시오. 질문 게시 버튼 아래에 질문에 대한 답변 확인란이 있습니다 . 다시 감사합니다.
tfrommen

wp_reset_postdata()구조를 위해. 각 사용자 지정 쿼리 후에 수행해야합니다 .
kaiser

답변:


21

두 개의 루프를 사용하고 있습니다. 첫 번째 루프는 페이지 컨텐츠를 표시하고 두 번째 루프는 조회 된 게시물 컨텐츠를 표시하는 것입니다. 필요한 경우 코드에 주석을 달았습니다. 나는이 루프로 강조 Deckster0는 말했다 워드 프레스 지원 , the_content()단지 워드 프레스 루프 내부에서 작동합니다. 이 코드를 내 템플릿에 넣습니다.

<?php
/*
* Template Name: My Template
*/
get_header(); ?>

<div id="container">
    <div id="content" class="pageContent">

    <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Page Title -->
    <?php
    // TO SHOW THE PAGE CONTENTS
    while ( have_posts() ) : the_post(); ?> <!--Because the_content() works only inside a WP Loop -->
        <div class="entry-content-page">
            <?php the_content(); ?> <!-- Page Content -->
        </div><!-- .entry-content-page -->

    <?php
    endwhile; //resetting the page loop
    wp_reset_query(); //resetting the page query
    ?>

    <?php
    // TO SHOW THE POST CONTENTS
    ?>                        
        <?php
        $my_query = new WP_Query( 'cat=1' ); // I used a category id 1 as an example
        ?>
        <?php if ( $my_query->have_posts() ) : ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

            <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Queried Post Title -->
            <div class="entry-content">
                <?php the_excerpt(); ?> <!-- Queried Post Excerpts -->
            </div><!-- .entry-content -->

        <?php endwhile; //resetting the post loop ?>

        </div><!-- #post-<?php the_ID(); ?> -->

        <?php
        wp_reset_postdata(); //resetting the post query
        endif;
        ?>

    </div><!-- #content -->         
</div><!-- #container -->

두 번째 쿼리는 내부에 있어서는 안됩니다 if( have_posts() ). 쿼리에 결과가 있는지 확인 if( $my_query->have_posts() )하려면 $my_query = new WP_Query( 'cat=1' );및 args 행 다음에 호출해야 합니다.
t31os

@ t31os 당신이 맞아요. 그것은 내 잘못이야. 이제 코드를 수정했습니다. 확인해 주셔서 감사합니다. :)
Mayeenul Islam

0

이 작업에는 두 개의 루프가 일반적이지만 약간 과다 복용됩니다.

모든 게시물이나 페이지는 슈퍼 변수를 제공합니다 $post. 왜 당신 get_post_meta()의 간단한 작업 $post->ID;) 궁금해 ?

당신이 당신의 나열된 게시물을 얻는 WP_Query ()를 시작하기 전에 그래서, 당신은으로 현재 페이지 - / 후 데이터에 액세스 할 수 있습니다 $post->ID, $post->post_content, $post->guid등을.

루프에서이 변수는 루프 된 포스트에 의해 채워집니다. 나중에 저장하기 위해 새 변수를 만들 수 있습니다

$temp_post = $post

// new WP_Query() + loop here

또는 전화

wp_reset_query ()

리스팅 후. 사이드 바의 데이터가 현재 페이지 / 포스트에 적합한 지 확인하려면 마지막 함수를 호출해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.