맞춤 게시물 유형을 쿼리 하시겠습니까?
3 대답
- 투표
-
- 2011-01-06
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( array( 'post_type' => array('post', 'portfolio') ) );
which shows both normal posts and posts inside
portfolio
typeor
query_posts('post_type=portfolio');
for only
portfolio
.Use as normal WP Query - read the Codex: http://codex.wordpress.org/Function_Reference/query_posts#Usage and 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;?>
-
이것은 상당히 오래된 대답입니다. 그러나 분명히해야 할 방법이 없습니다.거의 필연적으로 404 및 기타 여러 문제로 이어질 것입니다.@kaiser의 답변 또는 [`query_posts ()`를 사용해서는 안되는 이유에 대한이 게시물] (http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-및 사전 가져 오기 게시물/50762 # 50762)This is a fairly old answer - but to be clear, there is not the way you should being doing this. It will almost inevitably lead to 404s and a host of other problems. Please see @kaiser's answers or [this post on why you shouldn't use `query_posts()`](http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts/50762#50762)
- 7
- 2013-05-28
- Stephen Harris
-
- 2013-05-27
최근 답변은
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
파일에 간단히 넣을 수 있습니다 (권장되지 않음 ).Late answer as the main answer uses
query_posts()
, which should never be done.Use a filter
Use the
pre_get_posts
filter and just set theportfolio
post type for the main query. Use Conditional Tags to determine where you want to have this filter.Quick Example
<?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; }
Disclaimer
The above code is a plugin, but can simply get stuffed in the
functions.php
file of your theme (which is not recommended).-
기능에 추가하는 것이 권장되지 않는 이유는 무엇입니까?확실히 사이트 관리자가 테마를 변경하면 어쨌든이 새로운 테마로 홈 페이지에 포트폴리오를 표시하는 방법을 해결해야합니다.그래서 플러그인이 아닌 함수에 이것을 추가하는 것이 타당하다고 말하고 싶습니다.아니면 내가 뭔가를 놓치고 있습니까?why is it not recommended to add it to functions? Surely, if the site admin changes the theme they would need to address how to display the portfolio on the home page with this new theme anyway. So, I would say it is just as valid to add this in functions rather than a plugin. Or am I missing something?
- 0
- 2016-11-29
- Phill Healey
-
@PhillHealey 말했듯이 데이터는 보이지 않으며 코드를 복사하여 붙여 넣어야합니다.쿼리에 대한 무거운 논리 수정은 플러그인을 통해 가장 잘 제공되는 반면 표시 및 스타일은 테마에 유지되어야합니다.@PhillHealey As you said, the data would be invisible and you would have to copy and paste the code around. Heavy, logic modifications to queries are best served via plugins, while displaying and styling should be kept in themes.
- 0
- 2016-11-29
- kaiser
-
해당 코드가 테마와 관련된 경우는 아닙니다.Not if that code is specific to the theme.
- 0
- 2016-12-03
- Phill Healey
-
@PhillHealey 게시물 유형은 테마에 특정 **해서는 안됩니다 **.@PhillHealey A post type should **never** be specific to a theme.
- 0
- 2016-12-04
- kaiser
-
좋아,당신이 절대 값을 넘어서고 싶다면 괜찮습니다.그러나 디자인 특정 코드를 플러그인으로 푸시하지 않아야한다고 말하는 것은 옳지 않습니다.적절하지 않은 경우가 많습니다.Ok, if you want to get in some tit-for-tat over absolutes then fine. However, It's just not correct to say that none design specific code should be pushed out to a plugin. There are lots of times when that's not appropriate.
- 0
- 2016-12-05
- Phill Healey
-
- 2013-12-11
이 코드를 하위 테마 기능 파일 에 추가 (권장)하여 단일 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
또는 사용자 정의 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' ); } }
Add this code to your child themes functions file (recommended) to add your single CPT pages to your main loop
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; }
Source http://codex.wordpress.org/Post_Types
Or create a custom archive-portfolio.php page template which will only display your CPT pages. This only needs to be done if you haven't added a archive page using the plugin settings.
Example: 'has_archive' => true,
You can also control how many pages are displayed and the order in which they're displayed on the archive page using this code:
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' ); } }
맞춤 게시물 유형 UI 플러그인 을 설치했습니다.이 플러그인을 활성화 한 후
portfolio
라는 사용자 지정 게시물 유형을 만들었습니다.이제 프론트 엔드의 포트폴리오 페이지에서 이것을 사용하고 싶습니다. 맞춤 게시물 유형portfolio
인 모든 게시물을 가져 오려면 어떻게하나요?