カスタム投稿タイプUIプラグインをインストールしました。このプラグインをアクティブにした後、というカスタム投稿タイプを作成しましたportfolio
。これをフロントエンドのポートフォリオページで使用したいと思います。カスタム投稿タイプのすべての投稿portfolio
を取得するにはどうすればよいですか?
カスタム投稿タイプUIプラグインをインストールしました。このプラグインをアクティブにした後、というカスタム投稿タイプを作成しましたportfolio
。これをフロントエンドのポートフォリオページで使用したいと思います。カスタム投稿タイプのすべての投稿portfolio
を取得するにはどうすればよいですか?
回答:
query_posts( array( 'post_type' => array('post', 'portfolio') ) );
通常の投稿とportfolio
タイプ内の投稿の両方を表示します
または
query_posts('post_type=portfolio');
のみportfolio
。
通常のWPクエリとして使用-Codexを読む: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()