将自定义字段添加到分类输入:面板

时间:2010-09-06 作者:NetConstructor.com

我希望实现一些我认为很容易实现的事情,但似乎没有真正的例子来满足我的需求。

基本上,我有一个自定义帖子类型“Articles”,对于这个自定义帖子类型,我有一个新的分类法,我已经注册了这个分类法,它是为了可以添加源发布而创建的。

我的目标是能够通过这种自定义帖子类型添加一篇文章,然后从术语列表中选择适用的“源出版物”,以便显示文章的来源。

现在,我面临的问题似乎很简单。。。我所要做的就是在页面中添加一些额外的字段,您可以在其中输入每个分类术语。在这种情况下,我想为“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;
   }

5 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@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\']);
    }
  }
}
希望有帮助。

SO网友:jageo

在我寻找可能相同的东西的过程中发现了这篇文章,不久之后,我发现了这个插件:Ultimate Taxonomy Manager . 我现在还不支持它,但我已经在测试环境中进行了尝试,我认为它可以满足您的需要。检索数据时感觉有点笨拙,但这可能只是我和我对文档的理解。

SO网友:Manchumahara

我认为在选项表中保存自定义分类法元/额外字段/自定义字段会降低站点性能。比如,如果你的网站权重很大(访问者很多,点击率也很多),那么对于大量自定义分类法来说,选项表将是巨大的。这将增加其他插件的get\\u option()查询的加载时间,或者我认为这将严重影响性能。我们应该在选项表中保存不必要的内容,或者在选项表中增加行。

SO网友:Tom J Nowell

您试图通过添加非分类法的内容来修改分类法,这只会让您感到困惑。

相反,您需要向文章帖子类型添加一个自定义元框,并将URL和图像URL保存在自定义字段中。然后,您将使用代码在函数中添加列。php使用get_meta

SO网友:Bainternet
结束

相关推荐

WP-ADMIN似乎正在重定向

我的w-admin登录有一个奇怪的问题。这是从我升级到3.0以后才开始的,当我转到wp admin时,登录表单显示正常,但当我输入用户名并通过时,每次都会再次显示登录表单。使用密码恢复功能会导致电子邮件未找到错误。我知道用户名密码和电子邮件是正确的,b/c我可以访问mysql数据库,我可以看到值(至少用户名和电子邮件) 有人知道会出什么问题吗