代码之家  ›  专栏  ›  技术社区  ›  Sam JvdBerg

ACF单选按钮不在灵活内容内返回值

  •  0
  • Sam JvdBerg  · 技术社区  · 6 年前

    ACF plugin for WordPress .

    使用灵活的内容字段,管理员可以添加一个名为“复制”的布局。

    在这个布局中,他们可以选择“网格类型”(四分之一、三分之一、一半、全部)。以下是它在ACF中的外观:

    ACF Flexible Content

    <?php
      // Begin layout builder
      if( have_rows('layout_builder') ):
      while ( have_rows('layout_builder') ) : the_row();
    ?>
    
      <?php
    
        // Begin layout - Copy
        if( get_row_layout() == 'copy' ):
    
        // Begin repeater
        if( have_rows('copy') ):
    
        // Grid
        echo '<div class="grid-wrap">';
    
        while ( have_rows('copy') ) : the_row();
    
      ?>
    
        <div class="<?php
    
          if ( get_sub_field('grid_type') == 'quarter' ) {
            echo 'quarter';
          }
    
          if ( get_sub_field('grid_type') == 'third' ) {
            echo 'third';
          }
    
          if ( get_sub_field('grid_type') == 'half' ) {
            echo 'half';
          }
    
          if ( get_sub_field('grid_type') == 'full' ) {
            echo 'full';
          }
    
        ?>">
    
          <?= get_sub_field('copy'); ?>
    
        </div>
    
      <?php
        // End repeater
        endwhile;
    
        // End grid
        echo '</div>';
    
        endif;
    
        // End layout
        endif;
      ?>
    
    <?php // End layout builder
      endwhile;
      endif;
    ?>
    

    我期待着 grid_type 在前端吐出一个类,但它是空的。

    <?php var_dump( get_sub_field('grid_type') == 'half' ); ?> ,它返回 bool(false) .

    我在这里做错了什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   ksta    6 年前

    如果子字段网格输入错误,则必须在复制中继器循环之外执行此操作。这应该有效:

    <?php
      // Begin layout builder
      if( have_rows('layout_builder') ):
      while ( have_rows('layout_builder') ) : the_row();
    ?>
    
      <?php
    
        // Begin layout - Copy
        if( get_row_layout() == 'copy' ):
    
    
        $gridType = get_sub_field('grid_type');
    
        // Begin repeater
        if( have_rows('copy') ):
    
        // Grid
        echo '<div class="grid-wrap">';
    
        while ( have_rows('copy') ) : the_row();
    
      ?>
    
        <div class="<?php
    
          if ( $gridType == 'quarter' ) {
            echo 'quarter';
          }
    
          if ( $gridType == 'third' ) {
            echo 'third';
          }
    
          if ( $gridType == 'half' ) {
            echo 'half';
          }
    
          if (  $gridType == 'full' ) {
            echo 'full';
          }
    
        ?>">
    
          <?= get_sub_field('copy'); ?>
    
        </div>
    
      <?php
        // End repeater
        endwhile;
    
        // End grid
        echo '</div>';
    
        endif;
    
        // End layout
        endif;
      ?>
    
    <?php // End layout builder
      endwhile;
      endif;
    ?>