[英]WordPress: Trying to get specific category url using “get_categories()”
好的,问题相对简单,只是我不确定自己做错了什么。
问题:
我在博客上有4个类别菜单,即“行业新功能,管理,个人发展,生产力”: http : //radian3.com/blog/ (单击其中一个类别以查看我的意思,应该转到http:/ / localhost / wordpress / category / industry-news /示例。
目前,下面的代码仅刷新页面(转到博客页面)没有做任何事情
<div class="category-box">
<?php
$categories = get_categories();
$category_link = '';
foreach ($categories as $cat) {
if($cat->cat_name == 'industry news') {
$category_link = get_category_link($cat->cat_ID);
}
break;
}
?>
<a href="<?php echo $category_link; ?>"><img class="category-icon" src="<?php bloginfo('template_url');?>/img/desktop/images/category-icon-1.jpg">
<h3> INDUSTRY NEWS</h3></a>
</div>
有什么想法吗?
使用此代码:
使用$cat->name
代替$cat->cat_name
,并将$cat->cat_ID
更改为$cat->term_id
<div class="category-box">
<?php
$categories = get_categories();
$category_link = '';
foreach ($categories as $cat) {
if($cat->name == 'industry news') {
$category_link = get_category_link($cat->term_id);
}
break;
}
?>
<a href="<?php echo $category_link; ?>"><img class="category-icon" src="<?php bloginfo('template_url');?>/img/desktop/images/category-icon-1.jpg">
<h3> INDUSTRY NEWS</h3></a>
</div>
更多信息: https : //developer.wordpress.org/reference/functions/get_categories/
您的foreach包含一个可以保证执行的break
,因此您只会循环1次。
标记也位于循环之外,这意味着它只显示一次,而不是显示每个类别。
我尚不清楚您要实现的目标,因此我将提供两个示例,我认为这些示例将为您指明正确的方向。
<?php $categories = get_categories();
if ( $categories ) {
foreach ( $categories as $category ) { ?>
<div class="category-box">
<a href="<?php echo esc_url( get_category_link( $category ) ); ?>>
<img class="category-icon" src="<?php bloginfo('template_url');?>/img/desktop/images/category-icon-1.jpg">
</a>
<h3><?php echo $category->name; ?></h3>
</div>
<?php }
}
如果采用这种方法,您仍然需要找出如何动态更新图像的方法。
而不是获得单个链接,我们将获得一个包含所有类别链接的数组。
<?php $categories = get_categories();
$category_links = array_map( function( $category ) {
return get_category_link( $category );
}, $categories );
echo $category_links[0]; // [1], [2], etc...
尽管这可行,并且可以使您访问每个链接,但我认为这不是理想的解决方案。 相反,您应该利用返回的数据并动态显示它们,而不是硬编码。
如果您确定要使用选项2,也许添加一些键会有所帮助。
例:
<?php $categories = get_categories();
$category_links = array();
foreach ( $categories as $category ) {
$category_links[ $category->slug ] = get_category_link( $category );
}
用法:
<?php echo esc_url( $category_links['industry-news'] ); ?>
请记住,上面的示例使用段塞而不是数组键的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.