it-swarm.asia

Taksonomiye Girdiye Özel Alan Eklemek: Panel

Başarmak için oldukça basit olacağını düşündüğüm bir şeyi başarmaya çalışıyorum ama ihtiyaçlarıma ulaşabilecek gerçek örnekler yok gibi görünüyor.

Temel olarak, bu özel gönderi türü için özel bir "Yazılar" yazı türüne sahibim. Kaynak yayınlar ekleyebilmek için oluşturduğum, oluşturduğum yeni bir taksonomiye sahibim.

Amacım bu özel yazı tipi aracılığıyla bir makale ekleyebilmek ve sonra listeden uygulanabilir "kaynak yayını" seçerek makalenin nereden geldiğini gösterebilmekti.

Şimdi, sahip olduğum sorun basit gibi görünüyor ... Tek yapmaya çalıştığım, her bir taksonomi terimine girebileceğiniz sayfaya bazı ek alanlar eklemek. Bu durumda "URL" için bir alan eklemek ve her kaynak için bir resim eklemek istiyorum, böylece bir logo ekleyebiliyorum.

Öyleyse, buradaki soru ... Her bir terime ek bir alan eklemek için nasıl gideceğim?

Wordpress'in bu işlevsellik için saf bir şekilde izin vermeyeceğini varsayalım, bir şekilde "açıklama" alanının bir tür özel alan alanı olarak kullanılabileceğini ve böylece verilerin burada depolanabileceğini varsayıyorum.

O zaman elbette verileri çıkartmaya ve görüntülemeye çalışıyorum.

Kimsenin ilgilendiği durumlarda taksonomi sütun başlıklarını kişiselleştirebildim, bu şekilde özel yazı tipleri için sütunlar değiştirilebilir:

// CUSTOM TAXONOMY COLUMNS FOR CONTENT SOURCES
   add_filter("manage_edit-content_sources_columns", 'content_sources_columns');    
   function content_sources_columns($content_sources_columns) {
    $new_columns = array(
        'cb' => '<input type="checkbox" />',
        'name' => __('Name'),
//      'source_image' => '',
        'description' => __('URL'),
        'slug' => __('Slug'),
        'posts' => __('Posts')
        );
    return $new_columns;
   }
4

Merhaba @ NetConstructor.com :

Bunu geçen ay birileri için yazdım ve aradığınızı bulabilir. Kullanmaya hazır bir çözüm değil, değiştireceğiniz bir örnek:

<?php
/*
 * Example code showing how to hook WordPress to add fields to the taxonomny term edit screen.
 * 
 * This example is meant to show how, not to be a drop in example.
 *
 * This example was written in response to this question:
 *
 *    http://lists.automattic.com/pipermail/wp-hackers/2010-August/033671.html
 *
 * By:
 *
 *    Mike Schinkel (http://mikeschinkel.com/custom-wordpress-plugins/)
 *
 * NOTE:
 *
 *    This could easily become a plugin if it were fleshed out.
 *    A class with static methods was used to minimize the variables & functions added to the global namespace.
 *    wp_options was uses with one option be tax/term instead of via a serialize array because it aids in retrival
 *    if there get to be a large number of tax/terms types. A taxonomy/term meta would be the prefered but WordPress
 *    does not have one.
 *
 * This example is licensed GPLv2.
 *
 */

// These are helper functions you can use elsewhere to access this info
function get_taxonomy_term_type($taxonomy,$term_id) {
  return get_option("_term_type_{$taxonomy}_{$term->term_id}");
}
function update_taxonomy_term_type($taxonomy,$term_id,$value) {
  update_option("_term_type_{$taxonomy}_{$term_id}",$value);
}

//This initializes the class.
TaxonomyTermTypes::on_load();

//This should be called in your own code. This example uses two taxonomies: 'region' & 'opportunity'
TaxonomyTermTypes::register_taxonomy(array('region','opportunity'));

class TaxonomyTermTypes {
  //This initializes the hooks to allow saving of the
  static function on_load() {
    add_action('created_term',array(__CLASS__,'term_type_update'),10,3);
    add_action('edit_term',array(__CLASS__,'term_type_update'),10,3);
  }
  //This initializes the hooks to allow adding the dropdown to the form fields
  static function register_taxonomy($taxonomy) {
    if (!is_array($taxonomy))
      $taxonomy = array($taxonomy);
    foreach($taxonomy as $tax_name) {
      add_action("{$tax_name}_add_form_fields",array(__CLASS__,"add_form_fields"));
      add_action("{$tax_name}_edit_form_fields",array(__CLASS__,"edit_form_fields"),10,2);
    }
  }
  // This displays the selections. Edit it to retrieve
  static function add_form_fields($taxonomy) {
    echo "Type " . self::get_select_html('text');
  }
  // This displays the selections. Edit it to retrieve your own terms however you retrieve them.
  static function get_select_html($selected) {
    $selected_attr = array('text'=>'','user'=>'','date'=>'','etc'=>'');
    $selected_attr[$selected] = ' selected="selected"';
    $html =<<<HTML
<select id="tag-type" name="tag-type">
  <option value="text"{$selected_attr['text']}>Text</option>
  <option value="user"{$selected_attr['user']}>User</option>
  <option value="date"{$selected_attr['date']}>Date</option>
  <option value="etc" {$selected_attr['etc']}>Etc.</option>
</select>
HTML;
    return $html;
  }
    // This a table row with the drop down for an edit screen
    static function edit_form_fields($term, $taxonomy) {
    $selected = get_option("_term_type_{$taxonomy}_{$term->term_id}");
    $select = self::get_select_html($selected);
    $html =<<<HTML
<tr class="form-field form-required">
  <th scope="row" valign="top"><label for="tag-type">Type</label></th>
  <td>$select</td>
</tr>
HTML;
    echo $html;
  }
  // These hooks are called after adding and editing to save $_POST['tag-term']
  static function term_type_update($term_id, $tt_id, $taxonomy) {
    if (isset($_POST['tag-type'])) {
      update_taxonomy_term_type($taxonomy,$term_id,$_POST['tag-type']);
    }
  }
}

Umarım yardımcı olur.

5
MikeSchinkel

Özel taksonomiyi meta/fazladan alanlar/özel alanları seçenek tablosunda kaydetmenin site performansınızı öldüren bir şey olduğunu düşünüyorum. Siteniz ağır ağırlıklı (çok sayıda ziyaretçi, çok sayıda hit) gibi o zaman çok sayıda özel taksonomi için seçenek tablosu çok büyük olacaktır. ve diğer eklentiler için get_option () sorgusu için yükleme süresini uzatacak ya da bunun performansı çok daha fazla engelleyeceğini düşünüyorum. Gereksiz şeyleri seçenek tablosuna kaydetmeliyiz ya da seçenek tablosundaki satırları arttırmalıyız.

2
Manchumahara

Muhtemelen aynı şey için benim arayışıma bu yazıyla karşılaştım ve çok geçmeden bu eklentiye rastlamadan: Ultimate Taxonomy Manager . Henüz onaylamıyorum ama bir test ortamında denedim ve aradığınızı yaptığını düşünüyorum. Verileri alırken biraz sakar hissettiriyor, ancak bu sadece ben ve dökümantasyonu anlamam olabilir.

2
jageo
1
Bainternet

Taksonomiyi, taksonomik olmayan bir şey ekleyerek değiştirmeye çalışıyorsunuz.

Bunun yerine, makale yazı türüne özel bir meta kutusu eklemeniz ve URL'leri ve resim URL'lerini özel alanlara kaydetmeniz gerekir. Ardından, get_meta kullanarak ilgili postadaki bu özel alanları aramak için functions.php dosyasına sütun eklemek için kodu kullanırsınız.

1
Tom J Nowell