¿Quieres consultar el tipo de publicación personalizada?
3 respuestas
- votos
-
- 2011-01-06
query_posts( array( 'post_type' => array('post', 'portfolio') ) );
quemuestratanto laspublicacionesnormales como laspublicaciones dentro deltipo
portfolio
o
query_posts('post_type=portfolio');
solopara
portfolio
.Úselo como WP Querynormal: leael Codex: http://codex.wordpress.org/Function_Reference/query_posts # Usage y 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;?>
-
Estaes una respuestabastante antigua,peropara ser claros,noes laformaen que debería hacerlo.Casiinevitablemente conducirá a 404 y una serie de otrosproblemas.Porfavor,vea las respuestas de @ kaiser o [estapublicación sobrepor quéno debería usar `query_posts ()`] (http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-y-pre-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
La respuestatardía como respuestaprincipal utiliza
query_posts()
,que nunca debe realizarse.Utilice unfiltro
Utiliceelfiltro
pre_get_posts
y simplemente configureeltipo depublicaciónportfolio
para la consultaprincipal. Utilice Etiquetas condicionales para determinar dónde deseatenerestefiltro.Ejemplo 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; }
Renuncia de responsabilidad
El código anteriores un complemento,pero simplementepuede rellenarseen el archivo
functions.php
de sutema (que no recomendado).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).-
¿Por quéno se recomienda agregarlo afunciones?Seguramente,siel administrador del sitio cambiaeltema,deberá abordar cómomostrarelportafolioen lapágina deinicio conestenuevotema detodosmodos.Entonces,diría queesigualmente válido agregarestoen funcionesen lugar de un complemento.¿Ome estoyperdiendo algo?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 Como dijiste,los datos seríaninvisibles ytendrías que copiar ypegarel código.Lasmodificaciones lógicas ypesadas de las consultas se realizanmejor através de complementos,mientras que la visualización yelestilo debenmantenerseen lostemas.@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
-
No siese códigoesespecífico deltema.Not if that code is specific to the theme.
- 0
- 2016-12-03
- Phill Healey
-
@PhillHealey Untipo depublicación **nunca ** debe serespecífico de untema.@PhillHealey A post type should **never** be specific to a theme.
- 0
- 2016-12-04
- kaiser
-
Ok,si quieresentraren un ojopor ojo sobre los absolutos,entoncesestábien.Sinembargo,noes correcto decir queningún códigoespecífico de diseño debeenviarse a un complemento.Haymuchas ocasionesen las queesonoes apropiado.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
Agregueeste código a su archivo defunciones detemas secundarios (recomendado)para agregar suspáginas CPTindividuales a subucleprincipal
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; }
Fuente http://codex.wordpress.org/Post_Types
O cree unaplantilla depágina archive-portfolio.phppersonalizada que solomostrará suspáginas CPT. Esto solo debe hacerse sino ha agregado unapágina de archivo utilizando la configuración del complemento.
Ejemplo: 'has_archive'=> verdadero,
Tambiénpuede controlar cuántaspáginas semuestran yel ordenen el que semuestranen lapágina de archivomedianteeste 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' ); } }
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' ); } }
Heinstaladoel complemento deinterfaz de usuario detipo depublicaciónpersonalizada .Después de la activación deeste complemento,he creado untipo depublicaciónpersonalizada llamada
portfolio
.Ahora quiero usarestoen lapágina delportafolioen elfront-end.¿Cómo obtengo todas laspublicaciones que son detipo depublicaciónpersonalizadaportfolio
?