Добавление пользовательского поля к входу таксономии: панель

Я надеюсь достигать чего-то, что я изобразил, будет довольно просто выполнить, но кажется, что нет никаких реальных примеров, доступных для достижения моих потребностей.

По существу у меня есть пользовательский тип сообщения "Статей" для этого пользовательского типа сообщения, у меня есть новая таксономия, которую я зарегистрировал, который был создан так, чтобы исходные публикации могли быть добавлены.

Моя цель состояла в том, чтобы смочь добавить статью через этот пользовательский тип сообщения и затем выбрать применимую "исходную публикацию" из термина список, таким образом, я мог отобразиться, куда статья прибыла из.

Теперь, проблема, которую я имею, кажется, проста... Все, что я пытаюсь сделать, добавляют некоторые дополнительные поля к странице, где можно ввести каждый термин таксономии. В этом случае я хотел бы добавить поле для "URL" и включать изображение для каждого источника, таким образом, я могу добавить логотип.

Таким образом, вопрос здесь состоит... в том, как я пошел бы о добавлении дополнительного поля к каждому термину?

Я принимаю, не допускает ли Wordpress эту функциональность наивно, что так или иначе поле "описания" могло быть использовано как тип пользовательской полевой области и таким образом что данные могут храниться там.

Затем я пытаюсь, конечно, извлечь данные и отобразить их.

Я смог настроить заголовки столбцов таксономии в случае, если любой - интерес таким же образом, что столбцы могут быть изменены для пользовательских типов сообщения как это:

// 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
06.09.2010, 07:28
5 ответов

Привет @NetConstructor.com:

Я записал это в прошлом месяце для кого-то, и это может обратиться к тому, что Вы ищете. Это - пример, который Вы изменили бы, не полное готовое к использованию решение:

<?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']);
    }
  }
}

Надежда это помогает.

5
19.02.2020, 22:09
  • 1
    @MikeSchinkel: Большой ответ, спасибо. Дополнительная информация: если необходимо сделать материал, когда термин удален, вот рычаг, в котором Вы нуждаетесь delete_term. –  Geert 13.03.2012, 16:25

Столкнулся с этим сообщением в моих поисках, вероятно, того же самого, и вскоре после того, как столкнулся, это включает: Окончательный менеджер по Таксономии. Я просто еще не подтверждаю его, но я попробовал его в тестовой среде, и я думаю, что это делает то, что Вы ищете. Это чувствует себя немного неуклюжим при получении данных, но это могло просто быть я и моим пониманием документации.

2
19.02.2020, 22:09

Я думаю, сохраняя пользовательскую таксономию meta/extra полевые поля / пользовательские поля в таблице опции что-то уничтожающее Ваше функционирование сайта. Как то, если Ваш сайт будет тяжел взвешенный (много посетителя, много хитов) затем для большого количества пользовательской таксономии, то таблица опции будет огромна. и это увеличит время загрузки для get_option () запрос для других плагинов, или я думаю, что это будет препятствовать производительности много. мы должны сохранить ненужные вещи в таблице опции или строки увеличения в таблице опции.

2
19.02.2020, 22:09

Ваша попытка изменить таксономию путем добавления чего-то, что не является таксономией, которая только перепутает.

Вместо этого необходимо будет добавить пользовательское meta поле к типу сообщения статьи, и сохранить URL и отобразить URL в пользовательских полях. Затем Вы использовали бы код для добавления столбцов в functions.php для поиска тех пользовательских полей на соответствующем использовании сообщения get_meta

1
19.02.2020, 22:09

Более простой и легкий путь был бы:

WordPress Taxonomies Extra Fields the easy way - Bainternet

1
19.02.2020, 22:09

Теги

Похожие вопросы