从单个帖子隐藏某些类别

时间:2018-02-03 17:03:10

标签: php wordpress

我需要使用此脚本

限制wordpress上单个帖子中显示的类别数量
    function swift_list_cats($num){
$temp=get_the_category();
$count=count($temp);// Getting the total number of categories the post is filed in.
for($i=0;$i<$num&&$i<$count;$i++){
//Formatting our output.
$cat_string.='<a href="'.get_category_link( $temp[$i]->cat_ID ).'">'.$temp[$i]->cat_name.'</a>';
if($i!=$num-1&&$i+1<$count)
//Adding a ',' if it’s not the last category.
//You can add your own separator here.
$cat_string.=' | ';
}
echo $cat_string;
}

但我还需要隐藏一些类别。我该怎么做?

1 个答案:

答案 0 :(得分:0)

简单的答案是返回一个不基于数组长度的新计数,所以

for($i=0;$i<$num&&$i<$count;$i++){

<强>变为:

for($i=0;$i<10;$i++){

或使用 $temp = array_slice(get_the_category(), //ofset 0, //length 10);

Array slice信息可以在这里看到。

如果你需要隐藏一些值,通过向数据库中添加一个隐藏列并选择值WHERE hidden = 0可以更容易。但是要解决你的问题。你需要知道要隐藏哪些值。将它们存储在一个数组中并执行以下操作。

        function swift_list_cats($num){

    $hiddenArray = [12, 105];

    //change offset and limit to what you desire removing the slashes and labels

    $temp = array_slice(get_the_category(),  0,  10);
        $count=count($temp);

    $cat_string = '';   

    for($i=0;$i<$num&&$i<$count;$i++){

        if(in_array($temp[i]->cat_ID, $hiddenArray)){
              continue;
        }

        $cat_string.='<a href="'.get_category_link( $temp[$i]->cat_ID ).'">'.$temp[$i]->cat_name.'</a>';

        if($i!=$num-1&&$i+1<$count)

            $cat_string.=' | ';
    }
    echo $cat_string;
}

$ hiddenArray是您使用要隐藏的类别ID填充的数组