【问题标题】:Pass Advanced Custom Fields Through Blog Loop通过博客循环传递高级自定义字段
【发布时间】:2014-01-27 15:35:24
【问题描述】:

我希望有人可以在这里帮助我。我正在尝试将 ACF 集成到客户购买的主题中。

基本功能是我在每个帖子上都建立了一个自定义字段来选择帖子的放置位置。因此,如果他们在帖子中选择“选项 A”,则代码需要在传递与帖子相关的所有内容(标题、内容、图像等)之前检查该选项是否为真

在标准 php 文档中如何工作的基本代码示例如下:

<?php if (have_posts()): while (have_posts()) : the_post(); ?>
   <?php if(get_field('pick_your_theme') == "Theme1") { ?>

         <h2><?php the_title(); ?></h2>
         <p><?php the_excerpt(); ?></p>

   <?php } ?><?php endwhile; ?>
<?php endif; ?>

这里的问题是主题作者在一个巨大的开放 PHP 函数中创建了页面,而不是分解它(如上面的示例代码 1),我可以轻松地插入选择器 get_field。

以下是该页面的 PHP 代码链接:

http://pastebin.com/wyWQiQvx

【问题讨论】:

  • 您放入粘贴箱的帖子看起来与示例代码没有太大不同,只是主题作者使用“echo”而不是关闭PHP标签。

标签: php wordpress custom-fields advanced-custom-fields


【解决方案1】:

通常您应该已经能够使用以下代码访问循环中的 ACM 字段:

&lt;?php the_field('NAME_OF_FIELD'); ?&gt;

【讨论】:

    【解决方案2】:

    以@ChrisHerbert 的评论为基础,将条件潜入其中应该是一件简单的事情,因此代码的循环部分看起来像这样:

    if ( have_posts() ){ while (have_posts()){ the_post();
                if(get_field('pick_your_theme') == "Theme1") {  
                                                if( $gdl_show_title != "No" ){
                                                        echo '<div class="sixteen columns mb0">';
                                                        echo '<div class="page-header-wrapper">';
                                                        echo '<h1 class="page-header-title title-color gdl-title">' . get_the_title() . '</h1>';
                                                        echo '<div class="header-gimmick mr0"></div>';
                                                        echo '<div class="clear"></div>';
                                                        echo '</div>'; 
                                                        echo '</div>'; // sixteen columns                                                              
                                                }
    
                                                if( $page_background != 'No' ){
                                                        echo "<div class='sixteen columns'>";
                                                        echo '<div class="page-bkp-frame-wrapper">';
                                                        echo '<div class="page-bkp-frame">';
                                                }      
    
                                                $content = get_the_content();
                                                // Show content
                                                if( $gdl_show_content != 'No' && !empty($content) ){
                                                        echo '<div class="sixteen columns">';
                                                        echo '<div class="gdl-page-content">';
                                                        echo '<div class="bkp-frame-wrapper">';
                                                        echo '<div class="bkp-frame p20">';                                                    
                                                        the_content();
                                                        echo '</div>';                         
                                                        echo '</div>';         
                                                        echo '</div>'; // page-content
                                                        echo '</div>'; // sixteen columns
                                                }
    
                                 } //pick_your_theme conditional
    
                          } // while loop
    
             } //if have posts 
    

    显然,您可以自定义“pick_your_theme”条件中的代码以满足您的需要,并根据需要添加} elseif(get_field('pick_your_theme') == "Some_Other_Theme") { 或未设置“pick_your_theme”时的默认值} else { 块。

    【讨论】:

      猜你喜欢
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2016-06-08
      • 2017-12-16
      相关资源
      最近更新 更多