【问题标题】:Wordpress Advanced Custom Fields - Cleaner Way To Code ThisWordpress 高级自定义字段 - 更简洁的编码方式
【发布时间】:2022-12-31 09:30:48
【问题描述】:

我已将高级自定义字段添加到 woocommerce 类别页面以帮助 SEO。

有没有一种更简洁的编码方式,因为可能不需要很多多余的东西

        <div class="full top-cat-seo">
                <?php
                $queriedObject=get_queried_object();
                echo get_field('product_category_top_section_seo','product_cat_'.$queriedObject->term_id);
            
                $link1 = get_field('link_url_1','product_cat_'.$queriedObject->term_id);
                $link1name = get_field('link_url_1_name','product_cat_'.$queriedObject->term_id);
                $link2 = get_field('link_url_2','product_cat_'.$queriedObject->term_id);
                $link2name = get_field('link_url_2_name','product_cat_'.$queriedObject->term_id);
                $link3 = get_field('link_url_3','product_cat_'.$queriedObject->term_id);
                $link3name = get_field('link_url_3_name','product_cat_'.$queriedObject->term_id);
                $link4 = get_field('link_url_4','product_cat_'.$queriedObject->term_id);
                $link4name = get_field('link_url_4_name','product_cat_'.$queriedObject->term_id);
            
                if( $link1 ): ?>
                    <a class="button" href="<?php echo esc_url( $link1 ); ?>"><?php echo esc_html( $link1name );?></a>
                <?php endif; ?>
                <?php if( $link2 ): ?>
                    <a class="button" href="<?php echo esc_url( $link2 ); ?>"><?php echo esc_html( $link2name );?></a>
                <?php endif; ?>
                <?php if( $link3 ): ?>
                    <a class="button" href="<?php echo esc_url( $link3 ); ?>"><?php echo esc_html( $link3name );?></a>
                <?php endif; ?>
                <?php if( $link4 ): ?>
                    <a class="button" href="<?php echo esc_url( $link4 ); ?>"><?php echo esc_html( $link4name );?></a>
                <?php endif; ?>
            
        </div>

有 8 个自定义字段可根据此处创建 4 个按钮

https://onepoundcrisps.com/cat/brand/kp/

【问题讨论】:

    标签: php wordpress woocommerce advanced-custom-fields


    【解决方案1】:

    使用循环,您可以从循环键构建字段的名称。因此,您可以使用 'link_url_' . $i 而不是硬编码 link_url_1,其中 $i 是循环索引。

    您还可以获取链接并仅在有值时获取链接名称。

    这意味着您执行一组代码,任何更改都将反映在所有元素上......

    $queriedObject = get_queried_object();
    echo get_field('product_category_top_section_seo', 'product_cat_' . $queriedObject->term_id);
    
    for ($i = 1; $i < 5; $i++) {
        $link = get_field('link_url_' . $i, 'product_cat_' . $queriedObject->term_id);
    
        if ($link) {
            $linkName = get_field('link_url_' . $i . '_name', 'product_cat_' . $queriedObject->term_id);
            echo '<a class="button" href="' . esc_url($link) . '">' . esc_html($linkName) . '</a>';
        }
    }
    

    我已将 HTML 转换为 echo,如果您对当前版本感觉更舒服,您应该只需要更改字段名称(只需删除数字)。

    【讨论】:

      【解决方案2】:

      您可以使用循环遍历所有链接并显示它们,而不是为每个链接使用单独的条件语句。这是如何完成的:

      <div class="full top-cat-seo">
        <?php
        $queriedObject = get_queried_object();
        echo get_field('product_category_top_section_seo', 'product_cat_' . $queriedObject->term_id);
        ?>
        <?php
        for ($i = 1; $i <= 4; $i++) {
          $link = get_field("link_url_{$i}", "product_cat_{$queriedObject->term_id}");
          $linkname = get_field("link_url_{$i}_name", "product_cat_{$queriedObject->term_id}");
          if ($link) {
            ?>
            <a class="button" href="<?php echo esc_url($link); ?>"><?php echo esc_html($linkname); ?></a>
            <?php
          }
        }
        ?>
      </div>
      

      无需重复使用 get_field() 函数,您可以使用 get_fields() 函数在一次调用中检索特定产品类别的所有字段,然后以数组形式访问各个字段。这是如何完成的:

      <div class="full top-cat-seo">
        <?php
        $queriedObject = get_queried_object();
        $fields = get_fields("product_cat_{$queriedObject->term_id}");
        echo $fields['product_category_top_section_seo'];
        ?>
        <?php
        for ($i = 1; $i <= 4; $i++) {
          $link = $fields["link_url_{$i}"];
          $linkname = $fields["link_url_{$i}_name"];
          if ($link) {
            ?>
            <a class="button" href="<?php echo esc_url($link); ?>"><?php echo esc_html($linkname); ?></a>
            <?php
          }
        }
        ?>
      </div>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 2017-08-28
        • 2015-01-21
        • 2017-05-01
        • 2013-11-25
        • 2022-01-24
        • 2018-06-07
        相关资源
        最近更新 更多