好的,问题相对简单,我不知道自己做错了什么。
问题:
我有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>
想法好吗?
答案 0 :(得分:1)
使用此代码:
使用$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/
答案 1 :(得分:0)
您的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'] ); ?>
请记住,上面的示例使用slugs而不是数组键的名称。