it-swarm-vi.tech

Thêm trường vào màn hình chỉnh sửa danh mục, thẻ và phân loại tùy chỉnh trong quản trị viên WordPress?

Câu hỏi là "Làm cách nào để thêm một hoặc nhiều trường vào Màn hình chỉnh sửa danh mục, thẻ và phân loại tùy chỉnh trong Quản trị viên WordPress?" Câu hỏi này được hỏi trên wp- danh sách tin tặc ngày 1 tháng 8 năm 2010 và Tôi đã đưa ra một giải pháp vào cuối ngày hôm đó. người hỏi ban đầu đã thảo luận về vấn đề này một lần nữa hôm nay (21 tháng 8), điều đó nhắc nhở tôi về giải pháp. Vì nó có thể là một nhu cầu chung, tôi quyết định đăng giải pháp bao gồm cả mã lên đây để người khác tìm thấy trong tương lai.

33
MikeSchinkel

Tôi đã thêm trường 'hình ảnh' mới (tệp loại đầu vào) vào danh mục với sự trợ giúp của những

add_action('category_edit_form_fields','category_edit_form_fields');
add_action('category_edit_form', 'category_edit_form');
add_action('category_add_form_fields','category_edit_form_fields');
add_action('category_add_form','category_edit_form');


function category_edit_form() {
?>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#edittag').attr( "enctype", "multipart/form-data" ).attr( "encoding", "multipart/form-data" );
        });
</script>
<?php 
}

function category_edit_form_fields () {
?>
    <tr class="form-field">
            <th valign="top" scope="row">
                <label for="catpic"><?php _e('Picture of the category', ''); ?></label>
            </th>
            <td>
                <input type="file" id="catpic" name="catpic"/>
            </td>
        </tr>
        <?php 
    }

Bạn có thể tự do sử dụng bất kỳ phân loại nào, chỉ cần thay thế category thành tên phân loại của bạn

23
tpoxa

Ngoài ra, nếu bạn muốn thêm trường đó vào biểu mẫu phân loại tùy chỉnh, bạn chỉ cần thay thế danh mục bằng tên phân loại tùy chỉnh trong hàm add_action.

Thí dụ:

add_action('{custom_taxonomy}_edit_form_fields','category_edit_form_fields');
add_action('{custom_taxonomy}_edit_form', 'category_edit_form');
add_action('{custom_taxonomy}_add_form_fields','category_edit_form_fields');
add_action('{custom_taxonomy}_add_form','category_edit_form');
9
Ted

Đối với những người tìm cách móc vào trường mẫu thẻ, hook hơi khác một chút.

add_tag_form_fields

thay vì tag_add_form_fields như bạn mong đợi

2
Dean_Wilson

Tôi đã Thêm hình ảnh thêm và Xóa hình ảnh thêm vào phân loại tùy chỉnh tên là bảo hiểm.

/**
 * Plugin class
 **/
if ( ! class_exists( 'CT_TAX_META' ) ) {

class CT_TAX_META {

  public function __construct() {
    //
  }

 /*
  * Initialize the class and start calling our hooks and filters
  * @since 1.0.0
 */
 public function init() {
   add_action( 'insurance_add_form_fields', array ( $this, 'add_category_image' ), 10, 2 );
   add_action( 'created_insurance', array ( $this, 'save_category_image' ), 10, 2 );
   add_action( 'insurance_edit_form_fields', array ( $this, 'update_category_image' ), 10, 2 );
   add_action( 'edited_insurance', array ( $this, 'updated_category_image' ), 10, 2 );
   add_action( 'admin_enqueue_scripts', array( $this, 'load_media' ) );
   add_action( 'admin_footer', array ( $this, 'add_script' ) );
 }

public function load_media() {
 wp_enqueue_media();
}

 /*
  * Add a form field in the new category page
  * @since 1.0.0
 */
 public function add_category_image ( $taxonomy ) { ?>
   <div class="form-field term-group">
     <label for="category-image-id"><?php _e('Image', 'hero-theme'); ?></label>
     <input type="hidden" id="category-image-id" name="category-image-id" class="custom_media_url" value="">
     <div id="category-image-wrapper"></div>
     <p>
       <input type="button" class="button button-secondary ct_tax_media_button" id="ct_tax_media_button" name="ct_tax_media_button" value="<?php _e( 'Add Image', 'hero-theme' ); ?>" />
       <input type="button" class="button button-secondary ct_tax_media_remove" id="ct_tax_media_remove" name="ct_tax_media_remove" value="<?php _e( 'Remove Image', 'hero-theme' ); ?>" />
    </p>
   </div>
 <?php
 }

 /*
  * Save the form field
  * @since 1.0.0
 */
 public function save_category_image ( $term_id, $tt_id ) {
   if( isset( $_POST['category-image-id'] ) && '' !== $_POST['category-image-id'] ){
     $image = $_POST['category-image-id'];
     add_term_meta( $term_id, 'category-image-id', $image, true );
   }
 }

 /*
  * Edit the form field
  * @since 1.0.0
 */
 public function update_category_image ( $term, $taxonomy ) { ?>
   <tr class="form-field term-group-wrap">
     <th scope="row">
       <label for="category-image-id"><?php _e( 'Image', 'hero-theme' ); ?></label>
     </th>
     <td>
       <?php $image_id = get_term_meta ( $term -> term_id, 'category-image-id', true ); ?>
       <input type="hidden" id="category-image-id" name="category-image-id" value="<?php echo $image_id; ?>">
       <div id="category-image-wrapper">
         <?php if ( $image_id ) { ?>
           <?php echo wp_get_attachment_image ( $image_id, 'thumbnail' ); ?>
         <?php } ?>
       </div>
       <p>
         <input type="button" class="button button-secondary ct_tax_media_button" id="ct_tax_media_button" name="ct_tax_media_button" value="<?php _e( 'Add Image', 'hero-theme' ); ?>" />
         <input type="button" class="button button-secondary ct_tax_media_remove" id="ct_tax_media_remove" name="ct_tax_media_remove" value="<?php _e( 'Remove Image', 'hero-theme' ); ?>" />
       </p>
     </td>
   </tr>
 <?php
 }

/*
 * Update the form field value
 * @since 1.0.0
 */
 public function updated_category_image ( $term_id, $tt_id ) {
   if( isset( $_POST['category-image-id'] ) && '' !== $_POST['category-image-id'] ){
     $image = $_POST['category-image-id'];
     update_term_meta ( $term_id, 'category-image-id', $image );
   } else {
     update_term_meta ( $term_id, 'category-image-id', '' );
   }
 }

/*
 * Add script
 * @since 1.0.0
 */
 public function add_script() { ?>
   <script>
     jQuery(document).ready( function($) {
       function ct_media_upload(button_class) {
         var _custom_media = true,
         _orig_send_attachment = wp.media.editor.send.attachment;
         $('body').on('click', button_class, function(e) {
           var button_id = '#'+$(this).attr('id');
           var send_attachment_bkp = wp.media.editor.send.attachment;
           var button = $(button_id);
           _custom_media = true;
           wp.media.editor.send.attachment = function(props, attachment){
             if ( _custom_media ) {
               $('#category-image-id').val(attachment.id);
               $('#category-image-wrapper').html('<img class="custom_media_image" src="" style="margin:0;padding:0;max-height:100px;float:none;" />');
               $('#category-image-wrapper .custom_media_image').attr('src',attachment.url).css('display','block');
             } else {
               return _orig_send_attachment.apply( button_id, [props, attachment] );
             }
            }
         wp.media.editor.open(button);
         return false;
       });
     }
     ct_media_upload('.ct_tax_media_button.button'); 
     $('body').on('click','.ct_tax_media_remove',function(){
       $('#category-image-id').val('');
       $('#category-image-wrapper').html('<img class="custom_media_image" src="" style="margin:0;padding:0;max-height:100px;float:none;" />');
     });
     // Thanks: http://stackoverflow.com/questions/15281995/wordpress-create-category-ajax-response
     $(document).ajaxComplete(function(event, xhr, settings) {
       var queryStringArr = settings.data.split('&');
       if( $.inArray('action=add-tag', queryStringArr) !== -1 ){
         var xml = xhr.responseXML;
         $response = $(xml).find('term_id').text();
         if($response!=""){
           // Clear the thumb image
           $('#category-image-wrapper').html('');
         }
       }
     });
   });
 </script>
 <?php }

  }

$CT_TAX_META = new CT_TAX_META();
$CT_TAX_META -> init();

}

Lưu ý: Nếu bạn muốn thêm trường này vào một nguyên tắc phân loại khác, ví dụ: đối với loại bài đăng tùy chỉnh, bạn cần thay thế tham chiếu đến danh mục bằng tham chiếu đến sên phân loại của riêng bạn. Ví dụ: nếu bạn thêm đã tạo một phân loại thể loại, bạn sẽ nối chức năng này thông qua

add_action( 'taxonomy_add_form_fields', array ( $this, 'add_category_image' ), 10, 2 ).

Tên sên phân loại của tôi là bảo hiểm.

add_action ('Insurance_add_form_fields', mảng ($ this, 'add_carget_image'), 10, 2);

Sử dụng mã này trong tệp functions.php của bạn.

1
Vivekpathak

Tôi nhận ra điều này đã được hỏi cách đây một thời gian, nhưng WordPress đã thay đổi một chút vì vậy tôi đã quyết định phát triển một tập lệnh nhỏ đơn giản hóa quá trình thêm các trường tùy chỉnh vào các nguyên tắc phân loại và tùy ý cho phép bạn thêm các cột vào bảng điều khoản cho từng trường. Kịch bản được gọi là amarkal-taxonomy , và là một phần của khung Amarkal WordPress.

Sử dụng amarkal-taxonomy, việc thêm trường tùy chỉnh sẽ đơn giản hóa thành:

// Add a text field to the 'category' taxonomy 'add' & 'edit' forms:
amarkal_taxonomy_add_field('category', 'cat_icon', array(
    'type'        => 'text',
    'label'       => 'Icon',
    'description' => 'The category\'s icon',
    'table'       => array(
        'show'      => true,  // Add a column to the terms table
        'sortable'  => true   // Make that column sortable
    )
));

// Then you can retrieve the data using:
$icon = get_term_meta( $term_id, 'cat_icon', true );
1
Yoav Kadosh

Tôi sử dụng Loại Meta PLugin . Hoạt động trên tất cả các nguyên tắc phân loại, thẻ và danh mục tùy chỉnh

0
Carpy

Bạn cần thêm mã của mình vào tệp chủ đề.php. Ngoài ra, nếu bạn muốn thêm trường đó vào biểu mẫu phân loại tùy chỉnh, bạn chỉ cần thay thế danh mục bằng tên phân loại tùy chỉnh trong hàm add_action. Ví dụ: add_action ('category_edit_form_fields', 'category_edit_form_fields'); sẽ là add_action ('custom_taxonomy_name_form_fields', 'function_name_to_hook_on');

0
user3693