Abfrage für benutzerdefinierten Beitragstyp?
3 Antworten
- Stimmen
-
- 2011-01-06
query_posts( array( 'post_type' => array('post', 'portfolio') ) );
zeigt sowohlnormale Beiträge als auch Beiträgeim
anportfolio
Typoder
query_posts('post_type=portfolio');
nurfür
portfolio
.Alsnormale WP-Abfrage verwenden - 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(); ?> <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;?>
-
Diesisteine ziemlich alte Antwort - aber um klar zu sein,esgibt nicht die Art und Weise,wie Sie diestun sollten.Es wirdfast zwangsläufig zu 404s undeiner Vielzahl anderer Problemeführen.Bitte lesen Sie die Antworten von @ kaiser oder [diesen Beitrag,warum Sie `query_posts ()`]nicht verwenden sollten (http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-und-vor-get-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
Späte Antwort als Hauptantwort verwendet
query_posts()
,was niemals erfolgen sollte.Verwenden Sieeinen Filter
Verwenden Sie den Filter
pre_get_posts
und legen Sieeinfach den Posttypportfolio
für die Hauptabfragefest. Verwenden Sie Bedingte Tags ,um zubestimmen,wo Sie diesen Filter habenmöchten.Kurzes 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 e.g.: Every archive will feature both post types ) return $query; $query->set( 'post_type', array( 'post', 'portfolio' ) ); return $query; }
Haftungsausschluss
Der obige Codeistein Plugin,kann abereinfachin die Datei
functions.php
Ihres Themaseingefügt werden (was nicht empfohlen wird).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).-
Warum wirdnichtempfohlen,es zu Funktionen hinzuzufügen?Wenn der Site-Administrator das Thema ändert,musser sicherlichfestlegen,wie das Portfoliomit diesemneuen Thema auf der Startseite angezeigt werden soll.Daher würdeich sagen,dassesgenausogültigist,diesin Funktionen anstattin einem Plugin hinzuzufügen.Oderfehltmiretwas?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 Wie Sie sagten,wären die Daten unsichtbar und Siemüssten den Code kopieren undeinfügen.Schwerwiegende logische Änderungen an Abfragen werden ambesten über Pluginsbereitgestellt,während die Anzeige und das Stylingin Themenbeibehalten werden sollten.@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
-
Nicht,wenn dieser Codethemenspezifischist.Not if that code is specific to the theme.
- 0
- 2016-12-03
- Phill Healey
-
@PhillHealey Ein Beitragstyp sollte **niemals **themenspezifisch sein.@PhillHealey A post type should **never** be specific to a theme.
- 0
- 2016-12-04
- kaiser
-
Ok,wenn Sie sich über Absolutes hinwegsetzen wollen,dannist dasin Ordnung.Esistjedochnicht richtig zu sagen,dass kein designspezifischer Code anein Plugingesendet werden sollte.Esgibt viele Male,in denen dasnicht angemessenist.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
Fügen Sie diesen Code zu Ihrer Funktionsdateifür untergeordnete Themen (empfohlen) hinzu,um Ihreeinzelnen 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 Sieeine benutzerdefinierte archive-Portfolio.php-Seitenvorlage ,dienur Ihre CPT-Seiten anzeigt. Diesistnurerforderlich,wenn Siemit den Plugin-Einstellungen keine Archivseite hinzugefügt haben.
Beispiel: 'has_archive'=>true,
Mit diesem Code können Sie auch steuern,wie viele Seiten angezeigt werden undin 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' ); } }
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' ); } }
Ich habe das UI-Pluginfürbenutzerdefinierte Post-Typen installiert.Nach der Aktivierung dieses Plugins habeicheinen benutzerdefinierten Beitragstypnamens
portfolio
erstellt.Jetztmöchteich dies auf der Portfolio-Seiteim Frontend verwenden.Wie rufeich alle Posts ab,die vombenutzerdefinierten Posttypportfolio
sind?