基本上我正在为USB驱动器制造商的网站工作。我使用自定义分类法来表示该公司提供的每个USB驱动器的内存大小。以下是WordPress如何输出我的条款...
$terms = get_the_terms($post->ID, 'usb_mem');
if ($terms) {
foreach ($terms as $taxindex => $taxitem) {
echo '<span class="product_terms">' . $taxitem->name . '</span>';
}
}
-16GB
-1GB
-256MB
-2GB
-32GB
-4GB
-512MB
-8GB
我需要WordPress按实际数据大小对它们进行排序,而不仅仅是数字。理想情况下是这样的:
-256MB
-512MB
-1GB
-2GB
-4GB
-8GB
-16GB
-32GB
提前致谢! :d
答案 0 :(得分:1)
请注意,所有此代码都是内联的。你最好的选择:
任何方式,这是适当的代码。
// This is our lookup table to deal with strings.
$size_lookups = array('GB'=>pow(2,30), 'MB'=>pow(2,20), 'KB'=>pow(2,10), 'TB'=>pow(2,40));
// First, normalize all of the fields.
foreach ($terms as $taxitem)
{
$taxitem->fixed_size = intval($taxitem->size,10);
foreach ($size_lookups as $sizekey=>$sizemod)
{
if (strripos($taxitem->size, $sizekey))
{
$taxitem->fixed_size = intval($taxitem->size, 10) * $sizemod;
break;
}
}
}
// Set up a sorting function.
function sortBySize($a, $b)
{
return $b->fixed_size - $a->fixed_size;
}
// Do the sort.
$sorted = array_values($terms); // set up a shadow copy with new indexes.
usort ($sorted , 'sortBySize' );
// Display the results.
foreach ($sorted as $taxitem) {
echo '<span class="product_terms">' . $taxitem->name . '</span>';
}