如何为空字母分页项添加禁用属性

问题描述 投票:0回答:1

我有一个自定义分类法字母分页,按第一个字母列出术语。

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 的按钮都是可单击的,即使该术语为空。我想做的是将禁用属性添加到没有术语的字母中。

任何帮助或建议都会很棒。

我对此一无所知

php wordpress custom-taxonomy
1个回答
0
投票

要将禁用属性添加到空字母分页项,您需要在渲染链接/按钮之前检查每个字母是否有任何术语

  • 遍历字母数组,检查是否有任何字母 使用 get_terms 函数以每个字母开头的术语,以及 然后应用禁用类。

你可以做这样的事情

函数 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;

}

  • $active 变量应该根据您当前的排序来设置
  • CSS 应该为禁用类使用 hsvr 样式
© www.soinside.com 2019 - 2024. All rights reserved.