我有一个自定义分类法字母分页,按第一个字母列出术语。
function alpha_pagination() {
$array = array(
'A' => __('A',''), 'B' => __('B',''), 'C' => __('C',''),
'D' => __('D',''), 'E' => __('E',''), 'F' => __('F','')
);
$html = '';
foreach ( $array as $key=>$value ){
$active = ( $order == $key ) ? 'selected' : null;
$html .= '<a class="button '.$active.'" href="'.get_permalink().'? sortby='.$key.'">'.$value.'</a>';
}
print $html;
}
当我在分类列表页面上打印该函数时,一切正常,但从 a 到 z 的按钮都是可单击的,即使该术语为空。我想做的是将禁用属性添加到没有术语的字母中。
任何帮助或建议都会很棒。
我对此一无所知
要将禁用属性添加到空字母分页项,您需要在渲染链接/按钮之前检查每个字母是否有任何术语
你可以做这样的事情
函数 alpha_pagination() { $letters = array('A', 'B', 'C', 'D', 'E', 'F'); // 根据需要扩展这个数组
// Fetch all terms in the taxonomy
$all_terms = get_terms(array(
'taxonomy' => 'your_taxonomy_name', // change to actual taxonomy name
'hide_empty' => true,
));
// Filter terms by first letter
$terms_by_letter = [];
foreach ($all_terms as $term) {
$first_letter = strtoupper($term->name[0]); // Get the first letter of the term name
if (!isset($terms_by_letter[$first_letter])) {
$terms_by_letter[$first_letter] = [];
}
$terms_by_letter[$first_letter][] = $term; // Group terms by their first letter
}
$html = '';
foreach ($letters as $letter) {
$active = (isset($_GET['sortby']) && $_GET['sortby'] == $letter) ? 'selected' : '';
$disabled = !isset($terms_by_letter[$letter]) ? 'disabled' : ''; // Check if there are terms for this letter
if (!empty($disabled)) {
$html .= '<span class="button ' . $active . ' ' . $disabled . '">' . $letter . '</span>';
} else {
$html .= '<a class="button ' . $active . '" href="' . get_permalink() . '?sortby=' . $letter . '">' . $letter . '</a>';
}
}
print $html;
}