it-swarm-id.com

Menambahkan Bidang ke Layar Edit Kategori, Tag dan Taksonomi Ubahsuaian di Admin WordPress?

Pertanyaannya adalah "Bagaimana cara menambahkan satu bidang atau lebih ke Layar Edit Kategori, Tag, dan Taksonomi Kustom di Admin WordPress?" Pertanyaan ini adalah ditanyakan pada wp daftar peretas 1 Agustus 2010 dan Saya menawarkan solusi hari itu juga. Penanya asli mendiskusikan masalah ini lagi hari ini (21 Agustus) yang mengingatkan saya pada solusinya. Karena itu bisa menjadi kebutuhan umum saya memutuskan untuk mengirim solusi termasuk kode di sini untuk orang lain untuk menemukan di masa depan.

33
MikeSchinkel

Saya menambahkan 'gambar' bidang baru (file jenis input) ke kategori dengan bantuan ini

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 
    }

Anda bebas menggunakan taksonomi apa pun, cukup ganti category dengan nama taksonomi Anda

23
tpoxa

Selain itu, jika Anda ingin menambahkan bidang itu ke formulir taksonomi khusus, Anda cukup mengganti kategori dengan nama taksonomi khusus dalam fungsi add_action.

Contoh:

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

Bagi mereka yang ingin mengaitkan ke bidang bentuk tag, kailnya sedikit berbeda.

add_tag_form_fields

alih-alih tag_add_form_fields seperti yang Anda harapkan

2
Dean_Wilson

Saya telah menambahkan gambar tambah dan Hapus gambar tambahan yang diajukan ke taksonomi khusus yang namanya asuransi.

/**
 * 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();

}

Catatan: Jika Anda ingin menambahkan bidang ini ke taksonomi yang berbeda, mis. untuk jenis pos khusus, Anda harus mengganti referensi ke kategori dengan referensi ke siput taksonomi Anda sendiri. Misalnya, jika Anda menambahkan taksonomi genre yang dibuat, Anda akan menghubungkan fungsi ini melalui

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

Nama siput taksonomi saya adalah asuransi.

add_action ('insurance_add_form_fields', array ($ this, 'add_category_image'), 10, 2);

Gunakan kode ini dalam file functions.php Anda.

1
Vivekpathak

Saya menyadari ini ditanya beberapa waktu yang lalu, tetapi WordPress telah sedikit berubah sejak itu jadi saya memutuskan untuk mengembangkan skrip kecil yang menyederhanakan proses menambahkan bidang khusus ke taksonomi, dan secara opsional memungkinkan Anda menambahkan kolom ke tabel syarat untuk setiap bidang. Script ini disebut amarkal-taxonomy , dan merupakan bagian dari Amarkal WordPress framework.

Menggunakan amarkal-taxonomy, menambahkan bidang khusus disederhanakan menjadi:

// 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

Saya menggunakan Kategori Meta PLugin . Berfungsi pada semua taksonomi, tag, dan kategori khusus

0
Carpy

Anda perlu menambahkan kode Anda ke file functions.php tema Anda - juga jika Anda ingin menambahkan bidang itu ke formulir taksonomi khusus, Anda cukup mengganti kategori dengan nama taksonomi khusus di fungsi add_action. Contoh: add_action ('category_edit_form_fields', 'category_edit_form_fields'); akan menjadi add_action ('custom_taxonomy_name_form_fields', 'function_name_to_hook_on');

0
user3693