Я задаюсь вопросом, можно ли помочь мне работать через проблему или обеспечить идеи высокого звука.
У меня есть архив, отображающий список пользовательских налоговых терминов в представлении сетки.
Мой клиент должен смочь стать включения - выключения условия из отображения в сетке. Если бы они были сообщениями, то это было бы легко, потому что я мог просто сделать, чтобы он проверил/снял флажок категорию на сообщение. Однако taxonomies не имеют той функции из поля.
Кто-либо знает, как я мог бы выполнить это?
Я нашел решение. Благодаря @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>';
}
Вы смогли выполнять это использование Усовершенствованные Пользовательские Поля: 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; ?>
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 для налога и условий)
Надеюсь, это поможет.