web-dev-qa-db-fra.com

Répertoriez les types de publication personnalisés dans la liste déroulante

J'ai trois types de messages personnalisés, chacun avec environ 5 taxonomies et 2 types de messages personnalisés partagent deux taxonomies.

J'ai à peu près tout mis en place pour l'affichage à partir du front-end autre que la partie d'un menu déroulant pour afficher les post_types.

Comme c'est maintenant la publication frontale fonctionne, mais les URL sont cassées parce qu'elles n'ont pas le type de publication personnalisé, j'ai fait une recherche partout et je peux trouver zéro sur la liste des types de publication personnalisés ... peut-on le faire?

Cordialement Martin

edit: Je suis tombé par hasard sur ce sur codex ,

3
MartinJJ

Désolé, c'est un peu bizarre de répondre à sa propre question, mais voilà ...

Tout d'abord, déclarez la variable: (customcategory)

global $userdata;

$errors = array();

$title      = trim($_POST['wpuf_post_title']);
$customcategory      = trim($_POST['customcategory']);
$content    = trim($_POST['wpuf_post_content']);
$tags       = wpuf_clean_tags($_POST['wpuf_post_tags']);
$cat        = trim($_POST['cat']);

Deuxièmement, le tableau pour ajouter le post:

 if (!$errors) {
    $frontend_post = array(
            'post_title'    => $title,
            'post_content'  => $content,
            'post_status'   => $post_status,
            'post_author'   => $userdata->ID,
            'post_category'    =>    array($_POST['cat']),
            'post_type' => $customcategory,
            'tags_input'    => $tags
    );

    $post_id = wp_insert_post($frontend_post);

et enfin créez le dropdrown à partir de la fonction get_post_types:

<?php 
          $args=array(
                     'public'   => true,
                     '_builtin' => false
                     ); 
                $output = 'names';
                $operator = 'and';
                $post_types=get_post_types($args,$output,$operator); 

          echo '<select name="customcategory">';
          foreach ($post_types  as $post_type ) {
          echo '<option value="'. $post_type.'">'. $post_type. '</option>';
}echo '</select>';
?>
4
MartinJJ