Php 查询特定自定义帖子类型的问题

Php 查询特定自定义帖子类型的问题,php,custom-post-type,wordpress,Php,Custom Post Type,Wordpress,我不久前创建了这个网站,有一些自定义帖子类型,一切正常,现在我必须添加一个新的自定义帖子类型,并使用这个新的自定义帖子类型和“帖子”帖子类型进行循环 大概是这样的: $args = array ( 'post_type' => array( 'post', 'newsletter' ), 'posts_per_page' => -1, 'order' => 'DESC' ); 由于某种原因,这不起作用 我有其他职位类型相同的数组

我不久前创建了这个网站,有一些自定义帖子类型,一切正常,现在我必须添加一个新的自定义帖子类型,并使用这个新的自定义帖子类型和“帖子”帖子类型进行循环

大概是这样的:

$args = array (
    'post_type' => array( 'post', 'newsletter' ),
        'posts_per_page' => -1,
        'order'     => 'DESC'
);
由于某种原因,这不起作用

我有其他职位类型相同的数组,工作良好

$args = array (
    'post_type' => array( 'post', 'events' ),
        'posts_per_page' => -1,
        'order'     => 'DESC'
);
下面是奇怪的部分:

如果我有'post'-'events'(events是一种旧的自定义post类型),它可以工作,显示两种post自定义post类型, 如果我有“post”-“newsletter”(newsletter是新的自定义帖子类型),它只显示post, 如果我有“事件”-“时事通讯”,它只显示事件

如果我创建一个新的自定义帖子类型“新闻稿2”, 如果我有“时事通讯”-“时事通讯2”,它可以工作,显示两种自定义的帖子类型,但如果我有“帖子”-“时事通讯2”,它只显示“帖子”

所以。。。由于某种原因,旧的自定义帖子类型似乎无法与新的自定义帖子类型一起使用。。。有什么想法吗

谢谢

这是'newsletter'自定义帖子类型(顺便说一句,我所有的自定义帖子类型都完全相同,只是它们都有自己的名称“events”、“people”、“newsletter 2”,而不是newsletter)

以下是循环:

    $args = array (
                'post_type' => array( 'newsletter', 'post' ),
                'posts_per_page' => -1,
                'order'     => 'DESC',
                'post_status' => 'any',
            );
    $loop = new WP_Query( $args );


    if ( $loop->have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post();?>

     <li><? the_title(); ?></li> //here only shows post post_type posts.
    <?php   
    // end loop

    endwhile;
    endif;
    wp_reset_query(); ?>
$args=array(
'post_type'=>数组('newsletter','post'),
“每页帖子数”=>-1,
“订单”=>“描述”,
“post_状态”=>“任何”,
);
$loop=新的WP_查询($args);
如果($loop->have_posts()):而($loop->have_posts()):$loop->the_post();?>
  • //此处仅显示帖子类型的帖子。
    要正确回答你的问题真的非常困难,即使有赏金

    整个场景真正有趣的是,您的代码在所有方面都保持不变,因此您的问题与用于注册帖子类型的代码无关

    让我们看看可能的问题和默认设置

    • WP\u Query
      (如果您使用的是
      get\u posts
      ,则保持不变,
      get\u posts
      使用的是
      WP\u Query
      )已为其参数设置了预设值,如果未明确设置,则默认情况下会完全排除某些参数。让我们看一下影响结果的两个因素:

      • post\u类型
        ->默认
        post

      • post\u status
        ->对于注销用户,默认设置为
        publish
        ;对于登录用户,默认设置为
        publish
        private

    由于您已将
    post_type
    设置为包含您的帖子类型,因此我能想到的唯一其他选项是,查看上面的内容,
    newsletter
    post type posts要么尚未发布,要么您通过插件或自定义代码为其分配了自定义帖子状态

    你需要探索这种可能性。尝试将
    'post\u status'=>'any'
    添加到您的自定义查询中,查看您是否从
    时事通讯
    帖子类型中获得帖子。我不完全确定,如果你有一个自定义的职位分配给职位的地位,这将工作


    除此之外,关于这个问题,我真的没有什么可以提供的

    也许你有一个主题和/或插件已经创建了一个“时事通讯”CPT

    您可以使用“获取帖子类型”查看您当前拥有的所有帖子类型:

    https://codex.wordpress.org/Function_Reference/get_post_types
    

    请分享您如何注册
    时事通讯
    文章类型的代码。如果所有例外的
    时事通讯
    都使用相同的方式注册文章类型,那么您的命名约定在某个地方发生冲突。这不是不起作用,是起作用,但与旧的文章类型不起作用。。如果我单独显示它,它会工作,但如果我试图用旧的帖子类型显示它,它不会工作。。。如果我添加另一个新的自定义帖子类型,它会工作。。。时事通讯-时事通讯2效果很好。你读了全部内容了吗。。。我写道,我还创建了新的自定义帖子类型,如新闻稿2,但仍然不起作用。只是为了查看任何可能的结果。。。我创建了一个新的帖子类型newpost,并按照您的建议打印所有自定义帖子类型,所有内容看起来都正常,但在帖子类型上循环时仍然没有更改。新的自定义贴子类型可以与新的一起使用,但旧的自定义贴子类型不能与新的一起使用。谢谢您的帮助,但仍然没有任何更改:(.我更改了循环,添加了相同的帖子状态和sill…除了private,当然它没有显示任何内容,因为所有的帖子都是发布的。如果是单独发布的,或者与newsletter 2帖子类型一起发布,或者与我创建的任何新帖子类型一起发布,则始终会显示newsletter帖子类型..问题在于旧帖子类型仍然不起作用。Sh在黑暗中,注册帖子类型时,请将优先级从
    0
    更改为
    11
    。继续之前,请备份数据库,然后修复数据库。数据库可能有问题。这里有一个帮助。此外,请尝试重新安装wordpress,停用插件并切换到捆绑的themeThanks,以获取帮助D,我添加了11,没有任何改变。我试图修复这个表,但是我没能按照这篇文章来做,然后我就可以修复了,但是仍然没有改变:(我启用的插件是ACF和WPML,就是这样
    https://codex.wordpress.org/Function_Reference/get_post_types