繁体   English   中英

WordPress:尝试使用“ get_categories()”获取特定类别的URL

[英]WordPress: Trying to get specific category url using “get_categories()”

好的,问题相对简单,只是我不确定自己做错了什么。

问题:

目前,下面的代码仅刷新页面(转到博客页面)没有做任何事情

            <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次。

标记也位于循环之外,这意味着它只显示一次,而不是显示每个类别。

我尚不清楚您要实现的目标,因此我将提供两个示例,我认为这些示例将为您指明正确的方向。

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 }
} 

如果采用这种方法,您仍然需要找出如何动态更新图像的方法。

2)获取链接数组

而不是获得单个链接,我们将获得一个包含所有类别链接的数组。

<?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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM