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.
2 Answers
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>';
}
}
}
?>