Consulta para o tipo de postagem personalizada? [fechadas]

12

Eu instalei o plug-in da IU personalizada do tipo de postagem . Após a ativação deste plugin, criei um tipo de post personalizado chamado portfolio . Agora eu quero usar isso na página do portfólio no front-end. Como faço para buscar todas as postagens do tipo de postagem personalizada portfolio ?

    
por shalu 06.01.2011 / 11:14

3 respostas

19
query_posts( array( 'post_type' => array('post', 'portfolio') ) );

que mostra posts e postagens normais dentro de portfolio type

ou

query_posts('post_type=portfolio');

por apenas portfolio .

Use como uma Consulta WP normal - leia o Codex: enlace e enlace

<?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;?>
    
por Martin-Al 06.01.2011 / 11:33
13

Resposta tardia como a resposta principal usa query_posts() , o que deve nunca ser feito.

Use um filtro

Use o filtro pre_get_posts e apenas defina o tipo de postagem portfolio para a consulta principal. Use Tags condicionais para determinar onde você deseja ter esse filtro.

Exemplo rápido

<?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;
}

Aviso de isenção

O código acima é um plugin, mas pode simplesmente ser recheado no arquivo functions.php do seu tema (que é não recomendado).

    
por kaiser 27.05.2013 / 15:42
4

Adicione este código ao seu arquivo de funções de temas filho (recomendado) para adicionar suas páginas únicas de CPT ao seu loop principal

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;

}

Fonte enlace

Ou crie um personalizado Modelo de página do arquivo-portfolio.php que exibirá somente as páginas do CPT. Isso só precisa ser feito se você não tiver adicionado uma página de arquivo usando as configurações do plugin.

Exemplo: 'has_archive' = > verdade,

Você também pode controlar quantas páginas são exibidas e a ordem em que são exibidas na página de arquivo usando este código:

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' );

    }

}
    
por Brad Dalton 11.12.2013 / 01:02