web-dev-qa-db-fra.com

Créer une taxonomie personnalisée et afficher dans la liste déroulante metabox

Je cherche à créer un menu déroulant dans l'écran de post-édition qui contient 3 balises déjà existantes. Quel est le moyen le plus simple de procéder?

Fondamentalement, tout ce que je recherche, c’est un simple menu déroulant qui ajoute l’un des tags suivants au message lui-même; "ragoût de boeuf", "soupe aux pois" et "chili". J'aimerais aussi que le ragoût de boeuf soit la valeur par défaut.

Merci d'avance

EDIT: Etant donné que je ne veux pas que l’utilisateur puisse afficher plus d’une de ces 3 catégories à tout moment, et qu’il lui soit loisible de changer facilement la catégorie à sa guise, les balises pourraient ne pas être la meilleure solution? Aurais-je intérêt à créer une taxonomie personnalisée ("nourriture")? Ils seront essentiellement utilisés pour changer la façon dont un message est affiché sur la page d'accueil du site.

1
kallekillen

J'ai suivi ce guide pratique et cela a fonctionné comme une gâterie:

http://shibashake.com/wordpress-theme/wordpress-custom-taxonomy-input-panels

0
kallekillen

Créer un type de message personnalisé

function create_product()
{
   $labels = array(
    'name'               => _x( 'Product', 'post type general name', 'stacy' ),
    'singular_name'      => _x( 'product', 'post type singular name', 'stacy' ),
    'menu_name'          => _x( 'Products', 'admin menu', 'stacy' ),
    'name_admin_bar'     => _x( 'Product', 'add new on admin bar', 'stacy' ),
    'add_new'            => _x( 'Add New', 'product', 'stacy' ),
    'add_new_item'       => __( 'Add New Product', 'stacy' ),
    'new_item'           => __( 'New Product', 'stacy' ),
    'edit_item'          => __( 'Edit Product', 'stacy' ),
    'view_item'          => __( 'View Product', 'stacy' ),
    'all_items'          => __( 'All Product', 'stacy' ),
    'search_items'       => __( 'Search Product', 'stacy' ),
    'not_found'          => __( 'No Product found.', 'stacy' ),
    'not_found_in_trash' => __( 'No Product found in Trash.', 'stacy' )
);
   $args = array(
    'labels'             => $labels,
    'description'        => __( 'Description.', 'Add New Product on stacy' ),
    'public'             => true,
    'publicly_queryable' => true,
    'show_ui'            => true,
    'show_in_menu'       => true,
    'query_var'          => true,
    'rewrite'            => array( 'slug' => 'product' ),
    'has_archive'        => true,
    'hierarchical'       => false,
    'menu_position'      => 100,
            'menu_icon'          =>'dashicons-cart',
    'supports'           => array( 'title', 'editor', 'author', 'thumbnail','comments','capabilities' ),
            'taxonomies'         => array('product_category','product_tag')
);
    register_post_type( 'product', $args );
 }
 add_action( 'init', 'create_product' );

Créer des méta-valeurs personnalisées et des méta-valeurs sur le poste de modification

  function add_product_details_meta_box()
  {
   global $wpdb;
   global $post;
   $custom = get_post_custom( $post->ID );
   <p>
    <label>Short Description:</label><br />
    <textarea rows="5" name="short_description" class="width99"><?= @$custom["short_description"][0] ?></textarea>
   </p> 
   <p>
    <label>Price:</label><br />
            <input type="text" name="price" value="<?= @$custom["price"][0] ?>" class="width99" />
   </p>

    <p>
    <label>Dimensions (in):</label><br />
            <input type="text" name="length" value="<?= @$custom["length"][0] ?>" class="s" placeholder="Length"/>
    </p>
    <p>
    <label>Shipping Lead Days:</label><br />
            <input type="text" name="ship_lead_days" value="<?= @$custom["product_ship_lead_days"][0] ?>" class="s" placeholder="Shipping Lead Days"/>
    </p>
    <p>
    <label>Commision:</label><br />
            <input type="text" name="commision_broker" value="<?= @$custom["commision_broker"][0] ?>" class="s" placeholder="Enter Your Commision Here"/>
    </p>
   }
  add_action( 'admin_init', 'add_product_meta_boxes' );

Mettre à jour Post Meta

function save_product_custom_fields(){
 global $post;

 if ( $post )
 {
   update_post_meta($post->ID, "short_description", @$_POST["short_description"]);
  update_post_meta($post->ID, "price", @$_POST["price"]);
  update_post_meta($post->ID, "length", @$_POST["length"]);
       update_post_meta($post->ID,'product_ship_lead_days',@$_POST['ship_lead_days']);
 update_post_meta($post->ID,'commision_broker',@$_POST['commision_broker']);
  }
}
add_action( 'save_post', 'save_product_custom_fields' );
0
Vivek Tamrakar