it-swarm.com.de

Erstellen Sie eine benutzerdefinierte Taxonomie und wählen Sie die Dropdown-Liste In Metabox anzeigen

Ich möchte ein Dropdown-Menü im Post-Bearbeitungsbildschirm erstellen, das 3 bereits vorhandene Tags enthält. Wie geht das am einfachsten?

Im Grunde ist alles, was ich suche, ein einfaches Dropdown-Menü, das dem Post selbst eines der folgenden Tags hinzufügt. "Rindfleischeintopf", "Erbsensuppe" und "Chili". Ich möchte auch, dass "Rindfleischeintopf" die Standardeinstellung ist.

Danke im Voraus

BEARBEITEN: Da ich nicht möchte, dass der Benutzer mehr als eine dieser drei Kategorien gleichzeitig anzeigen kann und die Option haben muss, die gewünschte Kategorie einfach zu ändern, sind Tags möglicherweise nicht die beste Lösung. Wäre es besser für mich, eine benutzerdefinierte Taxonomie ("Lebensmittel") zu erstellen? Sie dienen im Wesentlichen dazu, die Art und Weise zu ändern, in der ein Beitrag auf der Startseite der Website angezeigt wird.

1
kallekillen

Ich habe diesen praktischen Leitfaden befolgt und er hat gut funktioniert:

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

0
kallekillen

Erstellen Sie einen benutzerdefinierten Beitragstyp

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' );

Erstellen Sie eine benutzerdefinierte Metabox und zeigen Sie den Metawert im Bearbeitungsbeitrag an

  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' );

Post-Meta aktualisieren

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