Abfrage für benutzerdefinierten Posttyp?

Ich habe das Benutzer-Post-Typ-UI-Plugin installiert. Nach der Aktivierung dieses Plugins habe ich einen benutzerdefinierten Post-Typ namens portfolio . Jetzt möchte ich das auf der Portfolio-Seite im Frontend verwenden. Wie hole ich alle Posts, die vom benutzerdefinierten Post-Typ- portfolio ?

Solutions Collecting From Web of "Abfrage für benutzerdefinierten Posttyp?"

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

Dies zeigt sowohl normale Posts als auch Posts innerhalb des portfolio

oder

 query_posts('post_type=portfolio'); 

für nur portfolio .

Verwenden Sie als normale WP-Abfrage – lesen Sie den Codex: http://codex.wordpress.org/Function_Reference/query_posts#Usage und 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(); ?> 

< ?php the_title(); ?>

< ?php echo get_the_excerpt(); ?>

< ?php endwhile;?>

Späte Antwort als Hauptantwort verwendet query_posts() , was niemals gemacht werden sollte.

Verwenden Sie einen Filter

Verwenden Sie den pre_get_posts Filter und legen Sie einfach den portfolio Post-Typ für die Hauptabfrage fest. Verwenden Sie Bedingte Tags , um zu bestimmen, wo Sie diesen Filter haben möchten.

Schnelles Beispiel

 < ?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 eg: Every archive will feature both post types ) return $query; $query->set( 'post_type', array( 'post', 'portfolio' ) ); return $query; } 

Haftungsausschluss

Der obige Code ist ein Plugin, kann aber einfach in die functions.php Datei Ihres Themes eingefügt werden (was nicht empfohlen wird).

Fügen Sie diesen Code zu Ihrer Unterthemen-functionsdatei hinzu (empfohlen), um Ihre einzelnen CPT-Seiten zu Ihrer Hauptschleife hinzuzufügen

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

Quelle http://codex.wordpress.org/Post_Types

Oder erstellen Sie eine benutzerdefinierte Archiv-Portfolio.php-Seitenvorlage, die nur Ihre CPT-Seiten anzeigt. Dies ist nur erforderlich, wenn Sie keine Archivseite mit den Plugin-Einstellungen hinzugefügt haben.

Beispiel: ‘has_archive’ => wahr,

Mit diesem Code können Sie außerdem steuern, wie viele Seiten angezeigt werden und in welcher Reihenfolge sie auf der Archivseite angezeigt werden:

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