добавление настраиваемого поля для ввода таксономии: панель

<p>я стремлюсь достичь чего-то, что, как я полагал, было бы довольно просто сделать, но, похоже, нет реальных примеров для удовлетворения моих потребностей.</p><p>по сути, у меня есть пользовательский тип записи "статьи" для этого пользовательского типа публикации. у меня есть новая таксономия, которую я зарегистрировал и которая была создана для добавления исходных публикаций.</p><p>моя цель состояла в том, чтобы иметь возможность добавить статью через этот пользовательский тип публикации, а затем выбрать соответствующую "исходную публикацию" из списка терминов, чтобы я мог отобразить, откуда появилась статья.</p><p>теперь проблема, с которой я столкнулся, кажется простой ... все, что я пытаюсь сделать, это добавить некоторые дополнительные поля на страницу, где вы можете ввести каждый термин таксономии. в этом случае я хотел бы добавить поле для "url" и включить изображение для каждого источника, чтобы я мог добавить логотип.</p><p>итак, вопрос здесь ... как бы я добавил дополнительное поле к каждому термину?</p><p>я предполагаю, что если wordpress не допускает такой функциональности наивно, что каким-то образом поле "описание" может использоваться как тип области пользовательских полей и, таким образом, данные могут храниться там.</p><p>затем я пытаюсь, конечно, извлечь данные и отобразить их.</p><p>я смог настроить заголовки столбцов таксономии на тот случай, если кто-то заинтересован так же, как столбцы могут быть изменены для пользовательских типов записей, например:</p><pre><code>// 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; } 

привет<strong> @ netconstructor.com </strong>:я написал это в прошлом месяце для кого-то, и это может касаться того, что вы ищете. это пример, который вы бы изменили, а не готовое к использованию решение:<?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  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']); } } } </code></pre><p>надеюсь, поможет.</p>

<p>я думаю, что сохранение мета/дополнительных полей/настраиваемых полей в таблице параметров - это то, что снижает производительность вашего сайта. например, если ваш сайт имеет большой вес (много посетителей, много посещений), то для большого количества пользовательских таксономий таблица параметров будет огромной. и это увеличит время загрузки для запроса get\_option () для других плагинов, или я думаю, что это сильно снизит производительность. мы должны сохранить ненужные вещи в таблице параметров или увеличить строки в таблице параметров.</p>

<p>наткнулся на этот пост в моем поиске, вероятно, того же самого, и вскоре после этого наткнулся на этот плагин: <a href="http://wordpress.org/extend/plugins/ultimate-taxonomy-manager/">ultimate taxonomy manager</a> . я пока не одобряю это, но я попробовал это в тестовой среде, и я думаю, что он делает то, что вы ищете. это выглядит немного неуклюже при получении данных, но это может быть только я и мое понимание документации.</p>

<p>проще и проще было бы:</p><p> <a href="http://en.bainternet.info/2012/wordpress-taxonomies-extra-fields-the-easy-way"><strong><code>wordpress taxonomies extra fields the easy way - bainternet</code></strong></a> </p>

<p>вы пытаетесь изменить таксономию, добавив что-то, что не является таксономией, что только запутает.</p><p>вместо этого вам нужно добавить пользовательский мета-блок к типу публикации статьи и сохранить url-адреса и url-адреса изображений в пользовательских полях. затем вы использовали бы код для добавления столбцов в functions.php, чтобы найти эти настраиваемые поля в соответствующем сообщении, используя <code>get\_meta</code></p>