【问题标题】:WordPress: Trying to get specific category url using "get_categories()"WordPress:尝试使用“get_categories()”获取特定类别的 url
【发布时间】:2017-08-11 04:10:39
【问题描述】:

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

问题:

目前下面的代码没有做任何事情只是刷新页面(去博客页面)

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

请给点意见?

【问题讨论】:

    标签: php html css wordpress


    【解决方案1】:

    使用此代码:

    使用$cat-&gt;name 代替$cat-&gt;cat_name 并将$cat-&gt;cat_ID 更改为$cat-&gt;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/

    【讨论】:

    • 啊,成功了!语法 $cat->cate_name 错误?我在教程中看过。
    【解决方案2】:

    您的 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'] ); ?>
    

    请记住,上面的示例使用 slugs 而不是数组键的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 2022-12-17
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多