Custom Post Type UI 플러그인 을 설치했습니다 . 이 플러그인을 활성화 한 후이라는 사용자 정의 게시물 유형을 만들었습니다 portfolio
. 이제 프론트 엔드의 포트폴리오 페이지에서 이것을 사용하고 싶습니다. 사용자 정의 게시물 유형의 게시물을 모두portfolio
가져 오려면 어떻게합니까 ?
Custom Post Type UI 플러그인 을 설치했습니다 . 이 플러그인을 활성화 한 후이라는 사용자 정의 게시물 유형을 만들었습니다 portfolio
. 이제 프론트 엔드의 포트폴리오 페이지에서 이것을 사용하고 싶습니다. 사용자 정의 게시물 유형의 게시물을 모두portfolio
가져 오려면 어떻게합니까 ?
답변:
query_posts( array( 'post_type' => array('post', 'portfolio') ) );
일반 게시물과 portfolio
유형 내부의 게시물을 모두 표시합니다.
또는
query_posts('post_type=portfolio');
오직 portfolio
.
일반적인 WP 쿼리로 사용-코덱을 읽으십시오 : http://codex.wordpress.org/Function_Reference/query_posts#Usage 및 http://codex.wordpress.org/Function_Reference/query_posts#Post_.26_Page_Parameters
<?php
query_posts(array(
'post_type' => 'portfolio',
'showposts' => 10
) );
?>
<?php while (have_posts()) : the_post(); ?>
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
<p><?php echo get_the_excerpt(); ?></p>
<?php endwhile;?>
주요 답변이 사용하는 늦은 답변 query_posts()
은 절대로 수행 해서는 안됩니다 .
pre_get_posts
필터를 사용하고 portfolio
기본 쿼리에 대한 게시물 유형을 설정하십시오 . 조건부 태그 를 사용 하여이 필터를 사용할 위치를 결정 하십시오 .
<?php
defined( 'ABSPATH' ) OR exit;
/* Plugin Name: (#6417) "Portfolio" post type in query */
add_filter( 'pre_get_posts', 'wpse_6417_portfolio_posts' );
function wpse_6417_portfolio_posts( $query )
{
if (
! $query->is_main_query()
// Here we can check for all Conditional Tags
OR ! $query->is_archive() // For e.g.: Every archive will feature both post types
)
return $query;
$query->set( 'post_type', array( 'post', 'portfolio' ) );
return $query;
}
위의 코드는 플러그인이지만 functions.php
테마 파일에 채워 넣을 수 있습니다 ( 권장 하지 않음).
이 코드를 자녀 테마 기능 파일 (권장)에 추가하여 단일 CPT 페이지를 기본 루프에 추가하십시오.
add_action( 'pre_get_posts', 'add_custom_post_types_to_loop' );
function add_custom_post_types_to_loop( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'portfolio' ) );
return $query;
}
소스 http://codex.wordpress.org/Post_Types
또는 CPT 페이지 만 표시 할 사용자 정의 archive-portfolio.php 페이지 템플릿 을 만듭니다 . 플러그인 설정을 사용하여 아카이브 페이지를 추가하지 않은 경우에만 수행해야합니다.
예 : 'has_archive'=> true,
이 코드를 사용하여 표시되는 페이지 수와 아카이브 페이지에 표시되는 순서를 제어 할 수도 있습니다.
add_action( 'pre_get_posts', 'cpt_items' );
function cpt_items( $query ) {
if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'portfolio' ) ) {
$query->set( 'posts_per_page', '8' );
$query->set( 'order', 'ASC' );
}
}
query_posts()