如何从自定义字段调用类别编辑器?

时间:2013-01-27 作者:Genxer

found 此代码用于自定义字段添加类别编辑器。

我在类别中添加了自定义字段。

e、 我的领域名称是Hastag,我有一个运动类别。我想调用display Sport的自定义字段(我想调用当前类别的自定义字段)。我该怎么做?

代码:

// the option name
define(\'MY_CATEGORY_FIELDS\', \'my_category_fields_option\');

// your fields (the form)
add_filter(\'edit_category_form\', \'my_category_fields\');
function my_category_fields($tag) {
    $tag_extra_fields = get_option(MY_CATEGORY_FIELDS);

    ?>

<table class="form-table">
        <tr class="form-field">
            <th scope="row" valign="top"><label for="_ce4-categoryTitle">Full Category Title</label></th>
            <td><input name="_ce4-categoryTitle" id="_ce4-categoryTitle" type="text" size="40" aria-required="false" value="<?php echo $tag_extra_fields[$tag->term_id][\'my_title\']; ?>" />
            <p class="description">The title is optional but will be used in place of the name on the home page category index.</p></td>
        </tr>
      </table>

    <?php
}


// when the form gets submitted, and the category gets updated (in your case the option will get updated with the values of your custom fields above
add_filter(\'edited_terms\', \'update_my_category_fields\');
function update_my_category_fields($term_id) {
  if($_POST[\'taxonomy\'] == \'category\'):
    $tag_extra_fields = get_option(MY_CATEGORY_FIELDS);
    $tag_extra_fields[$term_id][\'my_title\'] = strip_tags($_POST[\'_ce4-categoryTitle\']);
    update_option(MY_CATEGORY_FIELDS, $tag_extra_fields);
  endif;
}


// when a category is removed
add_filter(\'deleted_term_taxonomy\', \'remove_my_category_fields\');
function remove_my_category_fields($term_id) {
  if($_POST[\'taxonomy\'] == \'category\'):
    $tag_extra_fields = get_option(MY_CATEGORY_FIELDS);
    unset($tag_extra_fields[$term_id]);
    update_option(MY_CATEGORY_FIELDS, $tag_extra_fields);
  endif;
}
我正在尝试使用以下代码调用:

<?php
if ( is_category() ) {
    $current_cat = get_query_var(\'cat\');
}
 echo $tag_extra_fields[$current_cat->term_id][\'my_title\']; ?>

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

我编辑你的代码。它现在起作用了。谢谢@s\\u ha\\u dum

代码:

if ( is_category() ) {
    $current_cat = get_query_var(\'cat\');
}
$tag_extra_fields = get_option(MY_CATEGORY_FIELDS);
if (isset($tag_extra_fields[$current_cat])) {
    echo $tag_extra_fields[$current_cat][\'my_title\']; //i added this line.
}

SO网友:s_ha_dum

您正在将额外字段保存到*_options 所以你需要把他们从桌子上拉出来。您可以复制和拼凑现有代码的一些部分来实现这一点。

if ( is_category() ) {
    $current_cat = get_query_var(\'cat\');
}
$tag_extra_fields = get_option(MY_CATEGORY_FIELDS);
// var_dump($tag_extra_fields); // debug
if (isset($tag_extra_fields[$current_cat])) {
    var_dump($tag_extra_fields[$current_cat]);
}
当然,你不是真的想要var_dump. 您需要回显正确的标记。我不知道确切的加价是什么,但这应该让你开始。

例如,将标题输出为<h1> 标签:

echo \'<h1>\'.$tag_extra_field[\'my_title\'].\'</h1>\';
这是假设我已经正确解释了数组结构。如果不起作用,请取消注释var_dump 行并张贴问题中的输出——注释中的代码格式几乎不存在。

结束

相关推荐

problems exluding categories

我以前做过,但由于某种原因,它不起作用,我也不知道为什么。我只是想从博客页面中排除一些类别。我以为这件事很简单。我有索引。php文件打开,在循环之前,我这样做了 query_posts( $guery_string . \'&cat=-6\' ) if (have_posts)......rest of loop here. 我甚至尝试添加全局$query\\u字符串;最重要的是,我所做的一切都不能摆脱第6类。这种方法在最新版本的wordpress中是否不再有效?