daveaspinall
  • 0
Новичок

Пользовательские поля на странице редактирования категории с последующим их правильным отображением в шаблоне

  • 0

Кажется, в последнее время у этого проекта возникли проблемы, так что извините за спам-вопросы! Мне нужно было добавить на страницу редактирования категории в админке несколько дополнительных полей, чтобы мой клиент мог лучше ими управлять.

Я добавил дополнительные поля «Функции категории» и «Приложения категории», и следующий код работает должным образом:

// Add custom fields to category edit pages
// the option name
define('Category_Extras', 'Category_Extras_option');

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



    ?>

<table class="form-table">
        <tr class="form-field">
            <th scope="row" valign="top"><label for="Category_Extras_Features">Category Features</label></th>
            <td><textarea style="width: 97%;" cols="50" rows="5" name="Category_Extras_Features" id="Category_Extras_Features" class="tinymce"><?php  echo $tag_extra_fields[$tag->term_id]['Category_Extras_Features']; ?></textarea>
            <p class="description">This isn't applicable to all categories but allows additional information to be displayed on a category page.</p></td>
        </tr>
        <tr class="form-field">
            <th scope="row" valign="top"><label for="Category_Extras_Applications">Category Applications</label></th>
            <td><textarea style="width: 97%;" cols="50" rows="5" name="Category_Extras_Applications" id="Category_Extras_Applications" class="Category_Extras_Features"><?php  echo $tag_extra_fields[$tag->term_id]['Category_Extras_Applications']; ?></textarea>
            <p class="description">This isn't applicable to all categories but allows additional information to be displayed on a category page.</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_Category_Extras');
function update_Category_Extras($term_id) {
  if($_POST['taxonomy'] == 'category'):
    $tag_extra_fields = get_option(Category_Extras);
    $tag_extra_fields[$term_id]['Category_Extras_Features'] = strip_tags($_POST['Category_Extras_Features']);
    $tag_extra_fields[$term_id]['Category_Extras_Applications'] = strip_tags($_POST['Category_Extras_Applications']);
    update_option(Category_Extras, $tag_extra_fields);
  endif;
}


// when a category is removed
add_filter('deleted_term_taxonomy', 'remove_Category_Extras');
function remove_Category_Extras($term_id) {
  if($_POST['taxonomy'] == 'category'):
    $tag_extra_fields = get_option(Category_Extras);
    unset($tag_extra_fields[$term_id]);
    update_option(Category_Extras, $tag_extra_fields);
  endif;
}

Я повторяю это на странице следующим образом:

<?php $prod_features = get_option(Category_Extras); foreach($prod_features as $feature) { echo $feature['Category_Extras_Features']; } ?>

Однако очевидно, что он повторяет все варианты для всех категорий. Есть ли другая функция, которая позволила бы мне вывести «Особенности категории» для текущей категории? (этот код отображается на странице category.php)

Как всегда буду очень признателен за помощь 🙂

Спасибо

Дэйв

Share
  1. Сам разбирал! Может кому поможет…

    $cat = get_query_var('cat');
    $prod_extras = get_option(Category_Extras);
    $this_application = $prod_extras[$cat]['Category_Extras_Applications'];
    
    if(!empty($this_application)) { echo $this_application; }
    

    Ваше здоровье,

    Дэйв

    • 0
  2. Для настраиваемых полей категорий есть этот плагин: http://wordpress.org/extend/plugins/categorycustomfields/

    • 0

Оставить ответ

You must login to add an answer.