自定义分类项是否可以附加属性?

时间:2011-11-24 作者:pax

让我们举一个(经典的)示例,我想创建一个event 风俗post type, 将分配一些特定字段/属性。其中之一:location venue.

地点地点,我认为应该是自定义分类法中的一个标记,除了标题之外,还有一个url 还有一双coordinates, 例如

因此,问题是:

这是明智的做法吗

4 个回复
SO网友:djb

这听起来是个好主意,因为它可以让您按位置等进行查询。我不知道您计划使用坐标做什么,但将坐标附加到事件上是没有意义的(除非该事件是在字段中间的一次性事件,但我想这将是一种边缘情况?)。

至于实现,这是一个非常有用的插件:

http://wordpress.org/extend/plugins/taxonomy-metadata/

它允许您添加/获取/更新/删除术语meta,就像它是post meta一样

所以你可以做这样的事情(只是给出想法,可能不会100%奏效):

  add_action( \'locations_edit_form_fields\', \'edit_locations\');
  function edit_locations($location)
  {
    $url = get_term_meta($location->term_id, \'url\', true); 
    ?>
   <tr class="form-field">
      <th scope="row" valign="top"><label for="url">url</label></th>
      <td>
        <input type="text" name="url" id="url" 
            value="<?php echo $url; ?>"/>
        <p class="description">Add url here.</p>
      </td>
  </tr> 
  }
要设置信息,然后使用$\\u POST更新元数据,请执行以下操作:

 add_action( \'edited_locations\', \'update_location\', 10, 2);
 function update_location($location_term_id)
 {
   if (!$location_term_id) 
       return;

   if (isset($_POST[\'url\'])) {
      //you may wish to sanitize this value (not sure if it has been already?)
      update_term_meta($location_term_id, \'url\', $_POST[\'url\']);
   }
 }
进一步阅读:http://en.bainternet.info/2011/custom-taxonomies-extra-fields

SO网友:scribu

正如其他人已经说过的,不,术语不能附加其他属性。分类法中的术语只是一组项目的标签。

因此,我会创建第二个自定义帖子类型,然后使用帖子2将其连接到事件帖子类型:http://wordpress.org/extend/plugins/posts-to-posts/

SO网友:Joshua Abenazer

可以使用元盒添加坐标。查看此处的示例http://codex.wordpress.org/Function_Reference/add_meta_box#Example

SO网友:Tom J Nowell

你想要的是术语元数据,例如,两个事件被标记在“大地方”,而“大地方”有坐标等附加到它,这是由两个事件拉入的。

不幸的是,WordPress没有用于术语元的工具。你可以通过插件添加它,或者,你可以有一个post类型的location meta,设置为不公开,不显示在公开列表中,你可以将meta附加到它,然后将其分配到相关的term标记。

或者,您可以将您的分类法设为继承体系,添加名称为“coordinates-X-Y-Z”等的子术语,并在查看分类法术语时将其过滤掉。

结束

相关推荐

In need of array of post tags

在循环中的单个post页面上,我需要一个字符串形式的\\u tags()数组。get\\u tags()为我提供了所有的标签,而不仅仅是这篇文章。有没有一种简单的方法可以做到这一点?