最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

How to get only posts, pages and custom post types in WordPress

programmeradmin1浏览0评论

I am trying to get Pages, Posts and Custom Post Types In WordPress website but it is showing some other things in the list.

My Code:

<?php $types = get_post_types( ['public'   => true ], 'objects' );
         foreach ( $types as $type ) {
    
            if ( isset( $type->labels->name) ) { ?>
           
           <?php echo $type->labels->name ?>
           <br>
           
           <?php }
} ?>

In this, I am getting:

Posts
Pages
Media
My Templates
Locations

But I only want Pages, Posts and Locations (Locations is the Custom Post Type).

Any help is much appreciated.

I am trying to get Pages, Posts and Custom Post Types In WordPress website but it is showing some other things in the list.

My Code:

<?php $types = get_post_types( ['public'   => true ], 'objects' );
         foreach ( $types as $type ) {
    
            if ( isset( $type->labels->name) ) { ?>
           
           <?php echo $type->labels->name ?>
           <br>
           
           <?php }
} ?>

In this, I am getting:

Posts
Pages
Media
My Templates
Locations

But I only want Pages, Posts and Locations (Locations is the Custom Post Type).

Any help is much appreciated.

Share Improve this question asked Jan 8, 2021 at 13:54 Rahul KumarRahul Kumar 2074 silver badges20 bronze badges 4
  • Media is the attachments, the media library isn't a folder/file viewer, each uploaded file has a post of type attachment in the database. I don't know what My Templates is though, knowing more information about each post type would help, but there's a good chance that it's being added by a 3rd party plugin – Tom J Nowell Commented Jan 8, 2021 at 14:24
  • @TomJNowell, How I can remove that. I have added Elementor, so that's why My Templates is showing. – Rahul Kumar Commented Jan 8, 2021 at 14:59
  • @TomJNowell, I only want to show the Pages, Posts & All The Custom Post Types. – Rahul Kumar Commented Jan 8, 2021 at 15:00
  • My Templates is a custom post type, if you want just the post types that you registered and no others, you need to whitelist them with an array that lists the post types you registered – Tom J Nowell Commented Jan 8, 2021 at 15:29
Add a comment  | 

2 Answers 2

Reset to default 5

You can make an array of the post types you don't want and then check in_array() to see if they match before you output anything with them.

<?php
    //You'll want to get at the actual name for My Templates.
    //My attempt is just a guess.
    $types_array = array( 'attachment' , 'elementor_library' );
    $types = get_post_types( ['public'   => true ], 'objects' );
        foreach ( $types as $type ) {
            if( !in_array( $type->name, $types_array )) {
                if ( isset( $type->labels->name) ) {
                    echo $type->labels->name . '<br>';
                }     
            }
        }
?>

I tried this and got the solution:

<?php
 $types = get_post_types( ['public'   => true ], 'objects' );
 $exclude = array( 'attachment' , 'elementor_library' );

    foreach ( $types as $type ) {
      if( !in_array( $type->name, $exclude )) {
            if ( isset( $type->labels->name) ) {
                echo $type->labels->name . '<br>';
            }     
        }
    }
?>

You are use this or the above one also.

In this, You will get:

Pages
Posts
Custom Post Types
发布评论

评论列表(0)

  1. 暂无评论