Je suis en train de faire un plugin WordPress et touche un point difficile. J'essaie de faire en sorte qu'un utilisateur puisse choisir parmi tous leurs types de publication, y compris les types de publication personnalisés. Le code que j'ai ci-dessous montre les types de publication, page et pièce jointe dans une liste déroulante dans l'administrateur WordPress.
<?php
$args = array(
'public' => true,
'_builtin' => true
);
$output = 'names'; // names or objects, note names is the default
$operator = 'and'; // 'and' or 'or'
$post_types = get_post_types( $args, $output, $operator );
echo '<select name="custom-post-types">';
foreach ( $post_types as $post_type ) {
echo '<option value="'. $post_type.'">' . $post_type . '</option>';
}
echo '</section>';
?>
Je comprends que les utilisateurs puissent utiliser leur functions.php pour intégrer leurs types de publication personnalisés, mais j’essaie d’éviter ces problèmes pour eux et de faire en sorte que le plug-in les récupère automatiquement. J'ai essayé de regarder d'autres plugins et d'effectuer des recherches, mais les résultats de la recherche ne sont pas pertinents et d'autres plugins m'échappaient.
Appréciez toute aide, merci.
En passant l'argument _builtin
à get_post_types()
, seuls les types de publication par défaut de WordPress seront renvoyés.
Passez plutôt public
comme argument,
Voici un exemple de sortie sur un site de développement avec WooCommerce activé:
var_dump(get_post_types(['public' => true]));
//result
array(4) {
["post"]=>
string(4) "post"
["page"]=>
string(4) "page"
["attachment"]=>
string(10) "attachment"
["product"]=>
string(7) "product"
}
Sans argument (les types de publication non publics sont renvoyés avec public):
var_dump(get_post_types());
//result
array(11) {
["post"]=>
string(4) "post"
["page"]=>
string(4) "page"
["attachment"]=>
string(10) "attachment"
["revision"]=>
string(8) "revision"
["nav_menu_item"]=>
string(13) "nav_menu_item"
["product"]=>
string(7) "product"
["product_variation"]=>
string(17) "product_variation"
["shop_order"]=>
string(10) "shop_order"
["shop_order_refund"]=>
string(17) "shop_order_refund"
["shop_coupon"]=>
string(11) "shop_coupon"
["shop_webhook"]=>
string(12) "shop_webhook"
}