Ottenere la lista degli slug di tutti i tipi di post registrati
Vorrei ottenere una lista (array) di tutti i tipi di post che ho registrato.
In particolare, vorrei recuperare i loro slug.
Qualcuno potrebbe aiutarmi? grazie!

La risposta di @EAMann è corretta, ma WordPress ha già una funzione integrata per recuperare tutti i tipi di post registrati: get_post_types
<?php
// agganciarsi a init in ritardo, così tutto è registrato
// puoi anche usare get_post_types ovunque. Di solito va bene qualsiasi momento dopo init.
add_action( 'init', 'wpse34410_init', 0, 99 );
function wpse34410_init()
{
$types = get_post_types( [], 'objects' );
foreach ( $types as $type ) {
if ( isset( $type->rewrite->slug ) ) {
// probabilmente vorrai fare qualcos'altro.
echo $type->rewrite->slug;
}
}
}

Il modo più semplice è il seguente utilizzando la funzione WordPress get_post_types();
<?php
$get_cpt_args = array(
'public' => true,
'_builtin' => false
);
$post_types = get_post_types( $get_cpt_args, 'objects' ); // usa 'names' se vuoi ottenere solo il nome del post type.
// visualizza i post type registrati
echo '<pre>';
print_r($post_types);
echo '</pre>';
// fai qualcosa con l'array
if ( $post_types ) {
foreach ( $post_types as $cpt_key => $cpt_val ) {
// fai qualcosa.
}
}
?>

'object'
in $post_types = get_post_types( $get_cpt_args, 'object' )
dovrebbe essere corretto al plurale 'objects'
:
$post_types = get_post_types( $get_cpt_args, 'objects' )
rif: https://developer.wordpress.org/reference/functions/get_post_types/

Quando chiami register_post_type()
, questo aggiunge il tuo nuovo post type a una variabile globale chiamata $wp_post_types
. Quindi puoi ottenere un elenco di tutti i tuoi post type da quella variabile:
function get_registered_post_types() {
global $wp_post_types;
return array_keys( $wp_post_types );
}
La variabile $wp_post_types
è un array che contiene le definizioni dei tuoi CPT, con ogni insieme di argomenti del CPT (etichette, capacità, ecc.) mappato allo slug del CPT. Chiamando array_keys()
otterrai un array degli slug dei tuoi CPT.
