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.
Ich habe diesen praktischen Leitfaden befolgt und er hat gut funktioniert:
http://shibashake.com/wordpress-theme/wordpress-custom-taxonomy-input-panels
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' );