0

我希望有人可以在这里帮助我。我正在尝试将 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

4

2 回答 2

0

基于@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 {根据需要在其中设置块时添加一个或默认值。

于 2014-02-12T17:44:18.800 回答
0

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

<?php the_field('NAME_OF_FIELD'); ?>

于 2014-01-27T16:08:05.017 回答