it-swarm.asia

إضافة حقول إلى الشاشة وتحرير التصنيف والتصنيف المخصص في إدارة WordPress؟

السؤال هو "كيف أضيف حقلًا واحدًا أو أكثر إلى شاشة تحرير الفئة والعلامة والتصنيف المخصص في مسؤول WordPress؟" تم طرح هذا السؤال على السؤال wp- قائمة المتسللين 1 أغسطس 2010 و عرضت حلاً في وقت لاحق من ذلك اليوم. ناقش السائل الأصلي المشكلة مرة أخرى اليوم (21 أغسطس) الذي ذكرني بالحل. نظرًا لأنه قد يكون احتياجًا مشتركًا ، فقد قررت نشر الحل ، بما في ذلك الكود هنا ليجده الآخرون في المستقبل.

33
MikeSchinkel

أضفت حقل جديد "صورة" (ملف نوع الإدخال) إلى الفئة بمساعدة هذه

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 
    }

أنت حر في استخدام أي تصنيف ، فقط استبدل category باسم تصنيفك

23
tpoxa

أيضًا ، إذا كنت ترغب في إضافة هذا الحقل في نموذج التصنيف المخصص ، فكل ما عليك هو استبدال الفئة باسم التصنيف المخصص في دالة add_action.

مثال:

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

بالنسبة لأولئك الذين يتطلعون إلى ربط حقل نموذج العلامة ، فإن الخطاف مختلف قليلاً.

add_tag_form_fields

بدلاً من tag_add_form_fields كما تتوقع

2
Dean_Wilson

لقد أضفت صورة الإضافة وإزالة الصورة الإضافية المودعة في التصنيف المخصص وهو اسم التأمين.

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

}

ملاحظة: إذا كنت تريد إضافة هذا الحقل إلى تصنيف مختلف ، على سبيل المثال بالنسبة لنوع منشور مخصص ، يلزمك استبدال المرجع إلى الفئة بمرجع إلى سبيكة التصنيف الخاصة بك. على سبيل المثال ، إذا قمت بإضافة تصنيف تصنيف النوع ، فستربط هذه الوظيفة عبر

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

اسمي سبيكة التصنيف هو التأمين.

add_action ('insurance_add_form_fields' ، صفيف ($ this ، 'add_category_image') ، 10 ، 2) ؛

استخدم هذا الرمز في ملف functions.php الخاص بك.

1
Vivekpathak

أدركت أن هذا تم طرحه منذ فترة ، لكن WordPress تغير قليلاً منذ ذلك الحين ، لذا قررت تطوير برنامج نصي صغير يبسط عملية إضافة الحقول المخصصة إلى التصنيفات ، ويسمح لك اختياريا بإضافة أعمدة إلى جدول المصطلحات لكل حقل. يسمى البرنامج النصي amarkal-taxification ، وهو جزء من Amarkal وورد الإطار.

باستخدام amarkal-taxonomy ، تُضيف إضافة حقل مخصص إلى:

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

يمكنني استخدام الفئة ميتا PLugin . يعمل على جميع التصنيفات المخصصة والعلامات والفئات

0
Carpy

تحتاج إلى إضافة التعليمات البرمجية الخاصة بك إلى ملف features.php الخاص بالسمات - أيضًا إذا كنت ترغب في إضافة هذا الحقل إلى نموذج التصنيف المخصص الذي تقوم فقط باستبدال الفئة باسم التصنيف المخصص في وظيفة add_action. مثال: add_action ('category_edit_form_fields'، 'category_edit_form_fields')؛ سيكون add_action ('custom_taxonomy_name_form_fields'، 'function_name_to_hook_on')؛

0
user3693