Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Wordpress循环中包含自定义帖子类型_Php_Wordpress_Loops_Custom Post Type - Fatal编程技术网

Php 在Wordpress循环中包含自定义帖子类型

Php 在Wordpress循环中包含自定义帖子类型,php,wordpress,loops,custom-post-type,Php,Wordpress,Loops,Custom Post Type,对不起,我想我读了每一篇关于这个的帖子,但没法让它发挥作用 我有一个叫做“外部”的Wordpress自定义帖子类型,我想在我的主页上同时显示来自“外部”的帖子以及我的正常标准帖子 这是我的循环: <?php get_header(); if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } elseif ( get_query_var('page') ) { $paged = get_query_var('

对不起,我想我读了每一篇关于这个的帖子,但没法让它发挥作用

我有一个叫做“外部”的Wordpress自定义帖子类型,我想在我的主页上同时显示来自“外部”的帖子以及我的正常标准帖子

这是我的循环:

<?php 
get_header(); 

if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }?>


<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(''); ?>>
    <?php the_content(); ?>
</div>
<?php endwhile; wp_reset_postdata(); endif; ?>    
现在我可以在搜索结果中看到帖子,但我需要Block8.php中的查询来获取它们


谢谢

将其添加到functions.php文件中

/**
* @param WP_Query $query
* @return WP_Query
*/

function add_my_custom_post_type( $query ) {
    if ($query->is_main_query()) 
        $query->set( 'post_type', array( 'post', 'external' ) );
    return $query;
}
add_action( 'pre_get_posts', 'add_my_custom_post_type' );

Ref&duplicate:

要在常规循环(即posts页面)中包含自定义post类型,只需在
if(have_posts())之前向index.php添加以下代码:

$args = array(
'post_type'   => array('post', 'custom_post_type'),
'post_status' => 'publish',
);
$new_post_loop = new WP_Query( $args );
然后修改以下两行:

if(have_posts()):
将其更改为
if($new_post\u loop->have_posts()):

$args = array(
'post_type'   => array('post', 'custom_post_type'),
'post_status' => 'publish',
);
$new_post_loop = new WP_Query( $args );

while(have_posts()):the_post()
to
while($new\u post\u loop->have\u posts()):$new\u post\u loop->the\u post()

此解决方案避免了在后端的“所有帖子”屏幕中列出自定义帖子类型的问题,这是其答案;)

函数添加\我的\自定义\发布\类型($query){
如果(!is_admin()&&$query->is_main_query()){
如果($query->is\u main\u query()){
$query->set('post_type',数组('post','some_custom_post_type_name'));
}
返回$query;
}
}
添加操作('pre_get_posts'、'add_my_custom_post_type');

这是编写代码的正确方法,以免破坏仪表板查询。

Hi!当我将代码添加到functions.php时,它破坏了我的主题?可以加载站点,到许多重定向吗?听起来可能不相关。您是否已将wp_debug设置为true?如果是这样的话,发布你的错误消息。嗨,Mevius,我用一些代码更新了这个问题,这就是你想要的吗?谢谢,请点击旁边的复选标记接受下面的答案,因为该答案实际上解决了您的问题
$args = array(
'post_type'   => array('post', 'custom_post_type'),
'post_status' => 'publish',
);
$new_post_loop = new WP_Query( $args );