Interface d’ajout personnalisé pour un PostType personnalisé. (Créer un compte)

  • Statut : non résolu
13 sujets de 1 à 13 (sur un total de 13)
  • Auteur
    Messages
  • #543511
    darkterreur
    Participant
    Initié WordPress
    9 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.0
    – Version de PHP/MySQL : 5.4.10
    – Thème utilisé : personnalisé
    – Extensions en place : aucune
    – Nom de l’hebergeur : localhost sous mamp
    – Adresse du site : 127.0.0.0

    Problème(s) rencontré(s) :
    Bonjour,
    grâce a la fonction « register_post_type » je peut créer un type de POST personnalisé. Seulement je désire que dans l’onglet « add », je puisse moduler à ma guise et mettre les champs qui me conviennent. Je sais qu’il existe des custom_post mais je ne veut pas recréer mes champs à chaque ajout c’est contraignant.

    Donc je souhaite par exemple avoir un type de POST ‘immobilier’ et pouvoir ajouter chaque un bien immobilier avec des champs tel que. surface, prix, etc….
    J’ai bien vu que je pouvais interagir sur les champs grâce a l’option ‘supports’ de « register_post_type ». Je pense que je vais avoir besoin de ‘taxonomies’. Bien que malgré la documentation du codex je n’ai absolument pas compris leurs rôles.

    Pouvez vous me donner un conseil, m’orienter svp ?

    je vous remercie par avance.

    Cordialement

    #979695
    didier07
    Participant
    Maître WordPress
    1964 contributions

    Il faut que tu créés tes metabox. Tu trouveras des tutos à foison.
    Tu peux voir sur la page http://viticreation.fr/vacances-ardechoises (je sais, il faut que je remette la lightbox)

    Didier

    #979696
    darkterreur
    Participant
    Initié WordPress
    9 contributions

    Merci didier,

    Je vais aller voir de ce pas.

    Puis je me permettre de demande ce qu’est exactement les ‘taxonomies’ ?

    #979697
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    une taxonomie est un « axe de classement »
    il y a deux taxonomies standard dans wordpress : les catégories et les mots clés

    #979698
    darkterreur
    Participant
    Initié WordPress
    9 contributions

    Merci lumière de lune,
    je ne vois pas bien a quoi cela va me servir. Peut être pour un filtre sur mes types de Post ?

    Alors pour les métabox j’ai trouver mon bonheur ou presque j’ai fait un bout de code pour voir comment cela fonctionne. Mais elles n’apparaissent pas dans mon type de Post, quand je vais dans créer.

    je vous colle mon code ici

    add_action(‘init’, ‘my_custom_init’);

    function my_custom_init(){
    register_post_type(‘projet’, array(
    ‘label’ => __(‘Immobilier’),
    ‘singular_label’ => __(‘Immobilier’),
    ‘public’ => true,
    ‘show_ui’ => true,
    ‘capability_type’ => ‘post’,
    ‘hierarchical’ => false,
    ‘taxonomies’ => array( ‘surface’, ‘prix’ ),
    ‘supports’ => array( ‘title’,
    ‘editor’,
    )//ici le sujet qui m’interesse

    ));

    }

    add_action(‘add_meta_boxes’,’init_metabox’);

    function init_metabox(){
    add_meta_box(‘info_bien’, ‘Informations sur bien’, ‘info_client’, ‘Immobilier’, ‘side’);
    }


    function info_client($post){
    $surface = get_post_meta($post->ID,’_surface’,true);
    $prix = get_post_meta($post->ID,’_prix’,true);

    ?>
    <label for="surface">Surface : </label>
    <input id="surface" style="width: 50px;" type="text" name="surface" value=" » />
    <label for="prix">Prix : </label>
    <input id="prix" type="text" name="prix" value=" » />

    <?php
    }

    add_action('save_post','save_metabox');
    function save_metabox($post_id){
    if(isset($_POST['surface'])){
    update_post_meta($post_id, '_surface', sanitize_text_field($_POST['surface']));
    }
    if(isset($_POST['prix'])){
    update_post_meta($post_id, '_prix', sanitize_text_field($_POST['prix']));
    }
    }

    Pouvez vous me dire quelle erreurs je ne voit pas ?

    Je vous remercie par avance

    #979699
    didier07
    Participant
    Maître WordPress
    1964 contributions

    Ce bloc

    echo $surface; ?>
    <label for="surface">Surface : </label>
    <input id="surface" style="width: 50px;" type="text" name="surface" value=" » />
    <label for="prix">Prix : </label>
    <input id="prix" type="text" name="prix" value="add_action('init', 'my_custom_init');

    doit être dans la fonction d’affichage de ta métabox, pas en dehors.

    add_meta_box(‘info_bien’, ‘Informations sur bien’, ‘info_client’, ‘Immobilier’, ‘side’)

    C’est là que tu définis la fonction qui va gérer ton affichage

    #979700
    darkterreur
    Participant
    Initié WordPress
    9 contributions

    Bonjour didier,

    étrangement chez moi ce bloc est au bon endroit le copier/coller ne c’est pas bien passé.

    je remet pour voir

    add_action(‘init’, ‘my_custom_init’);

    function my_custom_init(){
    register_post_type(‘projet’, array(
    ‘label’ => __(‘Immobilier’),
    ‘singular_label’ => __(‘Immobilier’),
    ‘public’ => true,
    ‘show_ui’ => true,
    ‘capability_type’ => ‘post’,
    ‘hierarchical’ => false,
    ‘taxonomies’ => array( ‘surface’, ‘prix’ ),
    ‘supports’ => array( ‘title’,
    ‘editor’,
    )//ici le sujet qui m’interesse

    ));

    }

    add_action(‘add_meta_boxes’,’init_metabox’);

    function init_metabox(){
    add_meta_box(‘info_bien’, ‘Informations sur bien’, ‘info_client’, ‘Immobilier’, ‘side’);
    }


    function info_client($post){
    $surface = get_post_meta($post->ID,’_surface’,true);
    $prix = get_post_meta($post->ID,’_prix’,true);

    echo ‘<label for="surface">Surface : </label>‘;
    echo ‘<input id="surface" style="width: 50px;" type="text" name="surface" value=" » />’;
    echo ‘<label for="prix">Prix : </label>‘;
    echo ‘<input id="prix" type="text" name="prix" value=" » />’;


    }

    add_action(‘save_post’,’save_metabox’);
    function save_metabox($post_id){
    if(isset($_POST[‘surface’])){
    update_post_meta($post_id, ‘_surface’, sanitize_text_field($_POST[‘surface’]));
    }
    if(isset($_POST[‘prix’])){
    update_post_meta($post_id, ‘_prix’, sanitize_text_field($_POST[‘prix’]));
    }
    }

    #979701
    darkterreur
    Participant
    Initié WordPress
    9 contributions

    J’ai vu les

    je les ai corrigés

    #979702
    didier07
    Participant
    Maître WordPress
    1964 contributions

    Je pense que ton erreur est ici
    [c] register_post_type(‘projet’, array([/c]

    ou là
    [c]add_meta_box(‘info_bien’, ‘Informations sur bien’, ‘info_client’, ‘Immobilier’, ‘side’);[/c]

    Regarde bien la définition de tes fonctions et tu comprendras 😉

    #979703
    darkterreur
    Participant
    Initié WordPress
    9 contributions

    Bonjour,

    Ce fut laborieux mais j’ai trouver.

    c’est mon premier argument de register_post_type() qui n’étais pas le même que le quatrième argument de add_meta_box().

    Ils ne pouvaient pas se voir.

    Question, si je souhaite une fois dans le coté client faire un filtre pour avoir tout mes bien qui ont une surface de 50m2, par exemple. Je suppose que je dois utiliser des taxonomy pour créer des tags. Mais c’est assez flou j’en fait quoi de ces tags ensuite ? comme cela fonctionne t’il ?
    J’ai bien parcourus la doc sur le codex mais je n’ai pas compris l’idée.

    Je vous remercie par avance

    Cordialement.

    #979704
    didier07
    Participant
    Maître WordPress
    1964 contributions
    darkterreur wrote:
    c’est mon premier argument de register_post_type() qui n’étais pas le même que le quatrième argument de add_meta_box().

    Le quatrième argument de add_meta_box c’est le nom du post_type (enfin de la page sur laquelle doit apparaitre la metabox) 👏
    Tu la rateras pas la prochaine fois 🍺

    Les taxonomy c’est pour creer des categories ou des tags. Ensuite tu les fais afficher sur ton template.

    Regarde les pages de http://vacancesardechoises.fr c’est bourré de CPT et de taxonomies

    Didier

    #979705
    darkterreur
    Participant
    Initié WordPress
    9 contributions

    Bonjour,

    J’ai été voir le site, mais je ne suis pas sur de ce que je dois voir.
    J’ai parcouru le codex sur les taxonomy, mais une fois créer je ne vois pas bien ce que je peux en faire.
    A quoi me servent ils une fois dans mon template ?

    Je suis sur que c’est pour des tris ou des classement, mais je ne vois pas les outils de wordpress que je peux utiliser pour etre efficace.

    Cordialement

    #979706
    didier07
    Participant
    Maître WordPress
    1964 contributions

    http://codex.wordpress.org/fr:Hi%C3%A9rarchie_de_modeles

    Un fichier taxonomy-surface-50m.php va afficher que les posts qui ont comme 50m comme valeur dans la category (ou tag) surface.

    Dans mon cas : taxonomy-type-hebergement.php gére les pages http://vacancesardechoises.fr/type-hebergement/gites ou http://vacancesardechoises.fr/type-hebergement/camping

13 sujets de 1 à 13 (sur un total de 13)
  • Vous devez être connecté pour répondre à ce sujet.