gpt4 book ai didi

php - 限制显示的分类术语数量

转载 作者:可可西里 更新时间:2023-11-01 00:00:02 26 4
gpt4 key购买 nike

我有 2 个分类集 product_cattvshows_cat。每组有 12 个术语。

一个产品最多可以有 12 个术语(但不能同时来自 2 个集合)

我使用此代码在产品页面中显示术语列表:

$cats = get_the_term_list($post->ID, 'product_cat', '', '  ', ''); 
$tvcats = get_the_term_list($post->ID, 'tvshows_cat', '', ' ', '');

if (!empty($cats)){
echo strip_tags($cats, ' ');
}elseif(!empty($tvcats)){
echo strip_tags($tvcats, ' ');
}

结果是:

Action, Drama, Adventure, Biography, Animation

问题在于,在某些情况下,没有足够的空间来显示所有术语。

我需要将术语数限制为 2 个术语。

问题:

如何限制应用于两个的术语数?

谢谢

最佳答案

Instead using get_the_term_list() function, you should use get_the_terms() which will give you directly an array of terms objects (as get_the_term_list() is using get_the_terms() herself if you look to the source code of the function).

然后你可以构建一个自定义函数来得到你想要的(我将不使用 implode() 函数任何其他函数 php 函数,因为我们只需要 2 个术语。)

注意:这里不需要strip_tags()函数

所以你的代码将是:

// This function goes first
function get_my_terms( $post_id, $taxonomy ){
$cats = get_the_terms( $post_id, $taxonomy );

foreach($cats as $cat) $cats_arr[] = $cat->name;

if ( count($cats_arr) > 1) $cats_str = $cats_arr[0] . ', ' . $cats_arr[1]; // return first 2 terms
elseif ( count($cats_arr) == 1) $cats_str = $cats_arr[0]; // return one term
else $cats_str = '';

return $cats_str;
}

此代码位于您的事件子主题(或主题)或任何插件文件的 function.php 文件中......

下面是你的代码:

$cats = get_my_terms( $post->ID, 'product_cat' ); 
$tvcats = get_my_terms( $post->ID, 'tvshows_cat' );

// Displaying 2 categories terms max
echo $cats . $tvcats;

此代码位于您的 php 模板文件中


— update — (related to author comment)

或者没有函数,你的代码将是:

// Product categories
$cats = get_the_terms( $post->ID, 'product_cat' );

foreach($cats as $cat) $cats_arr[] = $cat->name;

if ( count($cats_arr) > 1) $cats_str = $cats_arr[0] . ', ' . $cats_arr[1]; // return first 2 terms
elseif ( count($cats_arr) == 1) $cats_str = $cats_arr[0]; // return one term
else $cats_str = '';

// TV shows categories
$tvcats = get_the_terms( $post->ID, 'tvshows_cat' );

foreach($tvcats as $tvcat) $tvcat_arr[] = $tvcat->name;

if ( count($tvcat_arr) > 1) $tvcats_str = $tvcat_arr[0] . ', ' . $tvcat_arr[1]; // return first 2 terms
elseif ( count($tvcat_arr) == 1) $tvcats_str = $tvcat_arr[0]; // return one term
else $tvcats_str = '';

// The Display of 2 categories
echo $cats_str . $tvcats_str;

这段代码在你的 php 模板文件中

此代码已经过测试并且可以工作。

关于php - 限制显示的分类术语数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39314286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com