我创建了一个自定义分类,并希望为每个类别提供一个图像选项。
function create_product_taxonomies()
{
// Add new taxonomy, make it hierarchical (like categories)
$labels = array(
'name' => _x('product_categories', 'taxonomy general name'),
'singular_name' => _x('Product', 'taxonomy singular name'),
'search_items' => __('Search Product Category'),
'all_items' => __('All Product Categorie(s)'),
'parent_item' => __('Parent Product Category'),
'parent_item_colon' => __('Parent Product Category:'),
'edit_item' => __('Edit Product Category'),
'update_item' => __('Update Product Category'),
'add_new_item' => __('Add New'),
'new_item_name' => __('New Product Name'),
'menu_name' => __('Product Categories'),
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'product_categories', 'with_front' => true));
register_taxonomy('product_categories', array('products'), $args);
flush_rewrite_rules();
}
//hooks
add_action('init', 'create_product_taxonomies', 0);
如何为用户提供上传每个类别图像的选项?
答案 0 :(得分:2)
在WordPress v4.4.2之前很难但不可能为术语制作自定义元字段,但现在它非常容易和简单。
你想上传图片,所以我们创建一个js文件并在functions.php
中编写一些代码。
但首先我们创建自定义上传元字段。
在function.php
或编写注册自定义分类代码并编写此代码的地方:
首先我们创建自定义元词字段
add_action('product_categories_add_form_fields', 'add_term_image', 10, 2);
function add_term_image($taxonomy){
?>
<div class="form-field term-group">
<label for="">Upload and Image</label>
<input type="text" name="txt_upload_image" id="txt_upload_image" value="" style="width: 77%">
<input type="button" id="upload_image_btn" class="button" value="Upload an Image" />
</div>
<?php
}
在add_action()_add_form_fields
之前编写自定义分类法,就像我在上面写"product_categories"_add_form_fields
然后我们保存元词值
<?php
add_action('created_product_categories', 'save_term_image', 10, 2);
function save_term_image($term_id, $tt_id) {
if (isset($_POST['txt_upload_image']) && '' !== $_POST['txt_upload_image']){
$group = '#' . sanitize_title($_POST['txt_upload_image']);
add_term_meta($term_id, 'term_image', $group, true);
}
}
?>
与上面相同,在add_action created_
之后写下您的分类名称,如created_product_categories
现在我们为编辑创建元术语字段
add_action('product_categories_edit_form_fields', 'edit_image_upload', 10, 2);
function edit_image_upload($term, $taxonomy) {
// get current group
$txt_upload_image = get_term_meta($term->term_id, 'term_image', true);
?>
<div class="form-field term-group">
<label for="">Upload and Image</label>
<input type="text" name="txt_upload_image" id="txt_upload_image" value="<?php echo $txt_upload_image ?>" style="width: 77%">
<input type="button" id="upload_image_btn" class="button" value="Upload an Image" />
</div>
<?php
}
现在保存已修改的值
add_action('edited_product_categories', 'update_image_upload', 10, 2);
function update_image_upload($term_id, $tt_id) {
if (isset($_POST['txt_upload_image']) && '' !== $_POST['txt_upload_image']){
$group = '#' . sanitize_title($_POST['txt_upload_image']);
update_term_meta($term_id, 'term_image', $group);
}
}
现在我们转向** JS 文件for WordPress Media Uploader **
媒体uploader.js
jQuery(document).ready(function($){
// Instantiates the variable that holds the media library frame.
var meta_image_frame;
// Runs when the image button is clicked.
$('#upload_image_btn').click(function(e){
// Prevents the default action from occuring.
e.preventDefault();
// If the frame already exists, re-open it.
if ( meta_image_frame ) {
meta_image_frame.open();
return;
}
// Sets up the media library frame
meta_image_frame = wp.media.frames.meta_image_frame = wp.media({
title: meta_image.title,
button: { text: meta_image.button },
library: { type: 'image' }
});
// Runs when an image is selected.
meta_image_frame.on('select', function(){
// Grabs the attachment selection and creates a JSON representation of the model.
var media_attachment = meta_image_frame.state().get('selection').first().toJSON();
// Sends the attachment URL to our custom image input field.
$('#txt_upload_image').val(media_attachment.url);
});
// Opens the media library frame.
meta_image_frame.open();
});
});
现在最后一步
转到functions.php
function image_uploader_enqueue() {
global $typenow;
if( ($typenow == 'products') ) {
wp_enqueue_media();
wp_register_script( 'meta-image', get_template_directory_uri() . '/js/media-uploader.js', array( 'jquery' ) );
wp_localize_script( 'meta-image', 'meta_image',
array(
'title' => 'Upload an Image',
'button' => 'Use this Image',
)
);
wp_enqueue_script( 'meta-image' );
}
}
add_action( 'admin_enqueue_scripts', 'image_uploader_enqueue' );
调用图像
调用图像
<?php
$categories = get_terms('product_categories');
foreach($categories as $term) {
$upload_image = get_term_meta($term->term_id, 'term_image', true);
?>
<img src="<?php echo $upload_image ?>">
<?php
}
?>
我的工作代码,请仔细使用。
希望此代码能为您提供帮助。如果这段代码能够接受我的答案:)
答案 1 :(得分:0)
无法添加大量代码,但您可以获得它
此外,对于相关的分类,github acf-taxonomy-field
这是我主题的片段:
register_field_group( array (
'id' => 'acf_taxonomy-authors',
'title' => 'Taxonomy Authors',
'fields' => array (
array (
'key' => 'field_560746011af90',
'label' => 'Book Authors',
'name' => 'book_authors',
'type' => 'image',
'instructions' => 'Upload the book author image here',
'save_format' => 'url',
'preview_size' => 'thumbnail',
'library' => 'all',
),
),
'location' => array (
array (
array (
'param' => 'ef_taxonomy',
'operator' => '==',
'value' => 'author',
'order_no' => 0,
'group_no' => 0,
),
),
),
'options' => array (
'position' => 'normal',
'layout' => 'default',
'hide_on_screen' => array (
),
),
'menu_order' => 0,
));
和taxonoy注册:
<?php
/**
* @uses Register Book Author Taxonomy
* @uses Adds query vars
* @author Nirpendra Patel
* @return void
**/
function reg_tax_author() {
$authors = array(
'name' => _x( 'Authors', 'Taxonomy plural name', 'b_thebookstore' ),
'singular_name' => _x( 'Author', 'Taxonomy singular name', 'b_thebookstore' ),
'search_items' => __( 'Search Authors', 'b_thebookstore' ),
'popular_items' => __( 'Popular Authors', 'b_thebookstore' ),
'all_items' => __( 'All Authors', 'b_thebookstore' ),
'parent_item' => __( 'Parent Author', 'b_thebookstore' ),
'parent_item_colon' => __( 'Parent Author:', 'b_thebookstore' ),
'edit_item' => __( 'Edit Author', 'b_thebookstore' ),
'update_item' => __( 'Update Author', 'b_thebookstore' ),
'add_new_item' => __( 'Add New Author', 'b_thebookstore' ),
'new_item_name' => __( 'New Author Name', 'b_thebookstore' ),
'add_or_remove_items' => __( 'Add or remove Authors', 'b_thebookstore' ),
'choose_from_most_used' => __( 'Choose from most used Authors', 'b_thebookstore' ),
'menu_name' => __( 'Authors', 'b_thebookstore' ),
);
$args = array(
'labels' => $authors,
'public' => true,
'show_in_nav_menus' => true,
'show_admin_column' => true,
'hierarchical' => true,
'show_tagcloud' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'query_var' => true,
'capabilities' => array(),
);
register_taxonomy( 'author', array( 'product' ), $args );
}
?>