it-swarm.com.de

Hinzufügen von Feldern zum Bearbeitungsbildschirm für Kategorien, Tags und benutzerdefinierte Taxonomien in WordPress Admin?

Die Frage lautet "Wie füge ich ein oder mehrere Felder zum Bearbeitungsbildschirm für Kategorien, Tags und benutzerdefinierte Taxonomien in WordPress Admin hinzu?" Diese Frage wurde auf der Webseite gestellt. Hackerliste 1. August 2010 und Ich habe eine Lösung angeboten Später an diesem Tag. Der ursprüngliche Fragesteller hat das Thema noch einmal besprochen heute (21. August), was mich an die Lösung erinnerte. Da es ein allgemeiner Bedarf sein könnte, habe ich beschlossen, die Lösung einschließlich Code hier oben zu veröffentlichen, damit andere sie in Zukunft finden können.

33
MikeSchinkel

Mit Hilfe dieser habe ich der Kategorie das neue Feld 'Bild' (Eingabetyp-Datei) hinzugefügt

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 
    }

Es steht Ihnen frei, eine Taxonomie zu verwenden. Ersetzen Sie einfach category durch Ihren Taxonomienamen

23
tpoxa

Wenn Sie dieses Feld zum benutzerdefinierten Taxonomieformular hinzufügen möchten, ersetzen Sie einfach die Kategorie durch den benutzerdefinierten Taxonomienamen in der Funktion add_action.

Beispiel:

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

Für diejenigen, die in das Tag-Formularfeld einbinden möchten, ist der Haken etwas anders.

add_tag_form_fields

statt wie erwartet tag_add_form_fields

2
Dean_Wilson

Ich habe das Bild hinzugefügt und das Bild extra entfernt, das in der benutzerdefinierten Taxonomie abgelegt wurde, deren Name Versicherung ist.

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

}

Hinweis: Wenn Sie dieses Feld einer anderen Taxonomie hinzufügen möchten, z. Für einen benutzerdefinierten Beitragstyp müssen Sie den Verweis auf Kategorie durch einen Verweis auf Ihre eigene Taxonomie ersetzen. Wenn Sie beispielsweise eine erstellte Genre-Taxonomie hinzufügen, wird diese Funktion über verknüpft

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

Mein Taxonomie-Slug-Name ist Versicherung.

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

Verwenden Sie diesen Code in Ihrer functions.php-Datei.

1
Vivekpathak

Mir ist klar, dass dies vor einiger Zeit gefragt wurde, aber WordPress hat sich seitdem etwas geändert. Deshalb habe ich beschlossen, ein kleines Skript zu entwickeln, das das Hinzufügen von benutzerdefinierten Feldern zu Taxonomien vereinfacht und optional das Hinzufügen von Spalten zur Begriffstabelle für jedes Feld ermöglicht. Das Skript heißt amarkal-taxonomy und ist Teil des Amarkal WordPress-Frameworks.

Durch die Verwendung von amarkal-taxonomy wird das Hinzufügen eines benutzerdefinierten Felds vereinfacht:

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

Ich benutze die Kategorie Meta PLugin . Funktioniert mit allen benutzerdefinierten Taxonomien, Tags und Kategorien

0
Carpy

Sie müssen Ihren Code zu Ihrer Datei themes functions.php hinzufügen - auch wenn Sie dieses Feld zum benutzerdefinierten Taxonomieformular hinzufügen möchten, ersetzen Sie einfach die Kategorie durch den benutzerdefinierten Taxonomienamen in der Funktion add_action. Beispiel: add_action ('category_edit_form_fields', 'category_edit_form_fields'); wird add_action sein ('custom_taxonomy_name_form_fields', 'function_name_to_hook_on');

0
user3693