Исключить условия таксономии из шаблона через бэкэнд?

Я задаюсь вопросом, можно ли помочь мне работать через проблему или обеспечить идеи высокого звука.

У меня есть архив, отображающий список пользовательских налоговых терминов в представлении сетки.

Мой клиент должен смочь стать включения - выключения условия из отображения в сетке. Если бы они были сообщениями, то это было бы легко, потому что я мог просто сделать, чтобы он проверил/снял флажок категорию на сообщение. Однако taxonomies не имеют той функции из поля.

Кто-либо знает, как я мог бы выполнить это?

1
27.08.2014, 02:30
3 ответа

Я нашел решение. Благодаря @Tarukus, поскольку его ответ был полезен. Снова, моя цель состояла в том, чтобы отобразить условия (не сообщения) от моей пользовательской таксономии через выключатель. Чтобы сделать это, я использовал Усовершенствованные Пользовательские Поля и создал поле "Select" с двумя значениями (вкл\выкл). После того как это поле было применено к моей таксономии, я мог выбрать значение для каждого термина. Значение по умолчанию было установлено на "прочь". Теперь для отображения только набора условий к "на" я должен был добавить следующий код в своем шаблонном файле - и конечно установить некоторые сроки к "на".

 <?php

    $terms = get_terms('MYTAXONOMY', array());      

    if($terms)

    {

        echo '<ul>';

        foreach($terms as $term)

        {


            if( get_field('ENTERCUSTOMFIELDSLUG', 'ENTERMYTAXONOMY_'.$term->term_id) != 'ENTERFIELDVALUE' ) 
                        continue;

            echo '<li>' . $term->name . '</a></li>';

        }

        echo '</ul>';

    }
0
19.02.2020, 22:53

Вы смогли выполнять это использование Усовершенствованные Пользовательские Поля: http://www.advancedcustomfields.com/resources/taxonomy/

Полевые группы, как поле таксономии, могут быть присвоены шаблонам. Редактируя страницу архива таксономии, пользователь видел бы флажки (или переключатели или избранное меню) для условий таксономии.

В соответствующей "таксономии архивируют" шаблон (из ссылки выше)...

<?php 

$terms = get_field('taxonomy_field_name');

if( $terms ): ?>

    <ul>

    <?php foreach( $terms as $term ): ?>

        <a href="<?php echo get_term_link( $term ); ?>"><?php echo $term->name; ?></a>

    <?php endforeach; ?>

    </ul>

<?php endif; ?>
2
19.02.2020, 22:53
  • 1
    Удостоверьтесь, что обеспечили некоторый контекст для ссылок, @taruckus. См.: wordpress.stackexchange.com/help/how-to-answer "Ссылки на внешние ресурсы поощряется, но добавьте контекст вокруг ссылки, таким образом, у Ваших поддерживающих пользователей будет некоторая идея, что это и почему это там". Я знаю, почему Вы рекомендуете это, но это не ясно из ответа. –  mrwweb 19.08.2014, 00:49
  • 2
    Спасибо, я посмотрю на ACF. Вы могли больше обеспечивать информацию о том, как она может помочь? –  streetfire 19.08.2014, 01:21
  • 3
    Уверенный все; сообщение расширено. –  Taruc 19.08.2014, 01:53
  • 4
    Привет, просто обновление, ACF помог мне достигнуть этого. Вы кодируете выше, я думаю, работал бы, но мне было нужно что-то немного более определенное, см. ответ, который я добавил. –  streetfire 26.08.2014, 20:56

Hy,

Из того, что я понимаю, что Вы хотите, чтобы фильтр показал сообщения, которые принадлежат определенному списку терминов. Как значение по умолчанию Вы отображаетесь, все сообщения, делающие все условия, включили. Для отключения термина от того, чтобы быть отображенным, необходимо исключить его из цикла.

<?php
// we get all the terms of the taxonomy
$terms = get_terms('mytaxonomy');

/*
excludeTerms=term1,term2,term3
as a GET parameter created by the exclude form
*/
$excludeList = array();

if (isset($_GET['excludeTerms']) && !empty($_GET['excludeTerms'])) {
    $excludeList = explode(',', $_GET['excludeTerms']);
}

/*
how to display the available terms
the permalink is get_term_link($term, $taxonomy);
*/
$termList = '';
if (!empty($terms) && !is_wp_error($terms)) {
    echo "<ul>";
    foreach ($terms as $term) {
        if (!in_array($term->name, $excludeList)) {
            echo "<li class='enabled-term'>" . $term->name . "</li>";
            if ($termList == '') {
                $termList = $term->name;
            } else {
                $termList .= ', ' . $term->name;
            }
        } else {
            echo "<li class='disabled-term'>" . $term->name . "</li>";
        }
    }
    echo "</ul>";
}

if ($termList != '') {
    $args = array(
        'post_type' => 'posttype',
        'mytaxonomy' => $termList
    );
} else {
    $args = array(
        'post_type' => 'posttype'
    );
}
query_posts($args);
while (have_posts()) {
    the_post();
    the_title();
    echo "<br />";
}
?>
    <style>
        .enabled-term, .disabled-term {
            cursor: pointer;
        }

        .disabled-term {
            color: #ddd;
        }
    </style>
    <script>
        jQuery(document).ready(function ($) {
            $('.enabled-term').live('click', function () {
                // so that one term remains enabled
                if ($('.enabled-term').length == 1)
                    return;
                $(this).removeClass('enabled-term').addClass('disabled-term');
                navigate();
            });
            $('.disabled-term').live('click', function () {
                $(this).removeClass('disabled-term').addClass('enabled-term');
                navigate();
            });
            function navigate() {
                list = $('.disabled-term');
                excludeList = '';
                for (i = 0; i < list.length; i++) {
                    if (excludeList == '')
                        excludeList = $(list[i]).text();
                    else
                        excludeList += ',' + $(list[i]).text();
                }
                window.location = window.location.origin + 
                                  window.location.pathname + 
                                  '?excludeTerms=' + excludeList;
            };
        }(jQuery));
    </script>

http://codex.wordpress.org/Function_Reference/get_terms для термина перечисляет http://codex.wordpress.org/query_posts для цикла (Пример 5 для налога и условий)

Надеюсь, это поможет.

0
19.02.2020, 22:53
  • 1
    Привет, Спасибо за Ваш ответ, но это не то, что я искал. –  streetfire 26.08.2014, 20:55
  • 2
    Берут его в качестве идеи не решение. Это может привести Вас куда-нибудь. –  aifrim 01.09.2014, 19:49
  • 3
    @streetfire Вы говорите о решении бэкенда? –  aifrim 03.09.2014, 17:28
  • 4
    да, решение для бэкенда было тем, в чем я нуждался. Я смог достигнуть его с помощью полей Advanced Custom и пользовательского запроса. –  streetfire 03.09.2014, 17:48