在首页显示自定义帖子类型

时间:2012-10-26 作者:hiiambo

我在Wordpress主题中添加了一个新的自定义帖子类型,但它拒绝显示在主页上。我试过设置

<?php query_posts( array( \'post_type\' => array(\'post\', \'reviews\') ) );?>
但它似乎不起作用,它只是循环我的正常帖子。任何建议都会很有帮助。

如果有人想看我的索引,这里有一个粘贴:

http://pastie.org/5120964

2 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

我会避免使用query\\u post,因为它会导致另一次数据库命中。在获取帖子之前,还有很多其他方法可以连接并更改查询。pre_get_posts 是其中之一。

要在主页上显示多个帖子类型(本例中为页面和帖子),请执行以下操作:

<?php
add_action(\'pre_get_posts\', \'wpse70606_pre_posts\');
/**
 * Change that query! No need to return anything $q is an object passed by 
 * reference {@link http://php.net/manual/en/language.oop5.references.php}.
 *
 * @param   WP_Query $q The query object.
 * @return  void
 */
function wpse70606_pre_posts($q)
{
    // bail if it\'s the admin, not the main query or isn\'t the (posts) page.
    if(is_admin() || !$q->is_main_query() || !is_home())
        return;

    // whatever type(s) you want.
    $q->set(\'post_type\', array(\'post\', \'page\'));
}
这将符合你的主题functions.php 文件或in a plugin.

SO网友:Manu

我会先试试这个:

global $wp_query;
$args = array_merge( $wp_query->query, array( 
  \'posts_per_page\' => -1,
  \'post_type\' => \'any\',
) );

query_posts( $args );
这将保留原始查询,并显示每个职位类型的每个职位(-1表示“所有职位”)。这将帮助您解决问题。

结束

相关推荐

在函数.php中使用wp_mail

在整理完整的实现之前,我已经设置了一个简单的邮件程序。我尝试了一些电子邮件地址,但没有收到它们,即使它返回“true”。如果这有什么不同的话,我也在使用wp\\uajax。功能。php // Check for email return in share folders add_action( \'wp_ajax_share_email\', \'share_email\' ); add_action( \'wp_ajax_nopriv_shar