Я намеревался использовать Tablesorter Плагин для сортировки таблицы в моей теме WordPress. В одном из столбцов моей таблицы у меня есть диапазон значений (то есть 8-10, 5-12 и т. Д.). В этом столбце сортировка не работает. Я видел решение пример в стеке потока Я пытался реализовать это, но безуспешно. В общем, сортировка работает на моей таблице, однако она дает неверные результаты по этому столбцу.
Вот мой заголовочный файл, в который я включаю скрипты:
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/jquery-latest.js"></script>
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/jquery.tablesorter.js"></script>
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/jquery.tablesorter.widgets.js"></script>
Вот мой стол
<table cellspacing='0' id="posts-table"> <!-- cellspacing='0' is important, must stay -->
<!-- Table Header -->
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
<th>Col4</th>
<th>Col5</th>
<th>Col6</th>
</tr>
</thead>
<!-- Table Header -->
<!-- Table Body -->
<?php /* Start the Loop */
$i = 1;?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
$val1 = get_post_meta($post->ID, 'x-value', true);
$post_categories = get_the_category();
$categories_by_id = array();
foreach ( $post_categories as $category ) {
$categories_by_id[$category->cat_ID] = $category;
}
foreach ( $post_categories as $category ) {
unset( $categories_by_id[$category->category_parent] );
}
echo '<tr>';
echo '<td class="align-center">'; echo $i++; echo'</td>';
echo '<td>'; echo end($categories_by_id)->cat_name; echo'</td>';
echo '<td>'; echo the_title(); echo'</td>';
echo '<td class="align-center">'; echo $val1; echo'</td>';
echo '<td class="align-center">'; echo $val1; echo'</td>';
echo '<td class="align-center">'; echo $val1; echo'</td>';
echo'</tr>';
?>
<?php endwhile; ?>
<!-- Table Body -->
</table>
И это инициализация TableSorter
$(document).ready(function()
{
$("#posts-table").tablesorter({
theme: 'blue',
sortList: [[1,0]],
widthFixed: true,
widgets: ['zebra', 'filter'],
widgetOptions: {
filter_functions: {
1 : function(e, n, f, i) {
var parts = e.split('-'),
val = parseFloat(f),
min = parseFloat(parts[0]),
max = parseFloat(parts[1] || 999); // default max = 999
return val >= min && val <= max;
}
},
filter_formatter : {
1 : function($cell, indx){
return $.tablesorter.filterFormatter.uiSlider( $cell, indx, {
values : 0,
min : 0,
max : 60,
delayed : false,
exactMatch: false,
valueToHeader : false
});
}
}
}
});
}
);
Есть мысли, почему это не работает? Извините, если это звучит глупо. Ура 🙂
filter_formatter
Код используется с отдельным файлом форматирования фильтра. Я не думаю, что это необходимо, или это может быть причиной того, что код не работает для вас.
Удалите этот блок кода и посмотрите, исправит ли он ваши проблемы с сортировкой (демонстрация):
$(function () {
$('table').tablesorter({
theme: 'blue',
sortList: [[1, 0]],
widthFixed: true,
widgets: ['zebra', 'filter'],
widgetOptions: {
filter_functions: {
1: function (e, n, f, i) {
var parts = e.split('-'),
val = parseFloat(f),
min = parseFloat(parts[0]),
max = parseFloat(parts[1] || 999); // default max = 999
return val >= min && val <= max;
}
}
}
});
});
Других решений пока нет …