Lizzzardking
Lizzzardking

Reputation: 31

WordPress get_post_type, how to display name of label

Hi stackflow community,

I'm fairly new to PHP, so please excuse any mistakes. For Wordpress I have registered a custom post type called ('energy') (see code). I know that with the command <PHP echo get_post_type();><?/>. I can call the name of the post type and I get energy as a result. But I want to call the 'name' that is situated in the 'labels' array. The Energy & Transport - how do I do that? I read it's possible with get_post_type_object(); but, a) I don't know if that's true and b) I don't know how to construct the correct command.

Can anyone please help me to get the correct command? Thanks in advance.

CUSTOM POST TYPE:

register_post_type('energy', array(
  'public' => true,
  'show_in_rest' => true,
  'has_archive' => true,
  'supports' => array('title', 'editor', 'thumbnail'),
  'menu_icon' => 'dashicons-lightbulb',
  'taxonomies'  => array( 'category' ),
  'labels' => array(
    'name' => 'Energy & Transport',
    'add_new_item' => 'Add New Post for Energy & Transport',
    'all_items'=> 'All Energy & Transport Posts',
  )
  ));

Upvotes: 0

Views: 2054

Answers (3)

phpdev
phpdev

Reputation: 179

You can try with the below code -

<?php 
    $custom_post_type = get_post_type();
    $custom_post_type_data = get_post_type_object( $post_type );

    $custom_post_type_name = $custom_post_type_data->labels->name;

Upvotes: -1

disinfor
disinfor

Reputation: 11533

You can use a combination of get_post_type() and get_post_type_object()

<?php
    // Get the post type  
    $post_type = get_post_type();
    // Get the post type object based on the post type;
    $post_type_object = get_post_type_object( $post_type );

    // Gets the name properties of the post type object.
    $post_type_name = $post_type_object->labels->name;

https://developer.wordpress.org/reference/functions/get_post_type/

https://developer.wordpress.org/reference/functions/get_post_type_object/

Upvotes: 3

Wakka
Wakka

Reputation: 444

So you just need to learn a bit more about objects and arrays really.

You are using the right function get_post_type_object();

In order to access the labels you need to descend the object like so

$energy = get_post_type_object( 'energy' );
echo $energy->labels->name;

Here is the documentation on objects: https://www.php.net/manual/en/language.types.object.php

Upvotes: 0

Related Questions