Wordpress高级自定义字段 - 显示在PAGE模板上

时间:2016-01-13 19:10:26

标签: php wordpress loops advanced-custom-fields

我在Wordpress中使用高级自定义字段。我已经设置了一个字段,可以在我的主页/ front-page.php模板上显示它......

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

我想在page.php模板上使用相同的字段,但是当我放入相同的代码时,不会返回任何结果。我不明白为什么它在一个模板上工作而在另一个模板上工作。我是否需要不同的代码才能在多个模板中显示相同的字段结果?这是代码......

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

    <div id="primary" class="content-area">
        <main id="main" class="site-main">
            <?php while ( have_posts() ) : the_post(); ?>
                <?php get_template_part( 'template-parts/content', 'page' ); ?>
                <?php
                    if ( comments_open() || get_comments_number() ) :
                        comments_template();
                    endif;
                ?>
            <?php endwhile; ?>
        </main><!-- #main -->
    </div><!-- #primary -->

这是一个循环问题吗? ACF不会在循环外显示出来吗?

5 个答案:

答案 0 :(得分:1)

如果要在循环外获取字段值,则必须将post_id作为函数的第二个参数

the_field($field_name, $post_id); //prints value
$value = get_field( $field_name, $post_id ); //returns value

ACF - get_field()

ACF - the_field()

答案 1 :(得分:1)

像这样:

<?php $value = get_field( 'primary_tagline', 288 );
echo $value; ?>

答案 2 :(得分:0)

我觉得这里的比赛有点晚了,但我想我会因为其他人遇到问题而陷入困境。只是尝试做同样的事情,以下问题解决了我,相当于你的问题。

<?php global $wp_query;
$post = $wp_query->post; 
$variablename = get_field('primary_tagline', $post->ID);?>

您希望调用wp查询并查找当前帖子ID,然后使用变量查找该帖子ID的字段(当前页面 - 或指定的ID,如果需要)。我只能假设的变量将请求保留在全局循环查询中,因此返回循环外的实际值而不仅仅是帖子ID。

然后,要显示您的字段,您可以简单地调用变量。

<?php echo $variablename; ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main">
            <?php while ( have_posts() ) : the_post(); ?>
                <?php get_template_part( 'template-parts/content', 'page' ); ?>
                <?php
                    if ( comments_open() || get_comments_number() ) :
                        comments_template();
                    endif;
                ?>
            <?php endwhile; ?>
        </main><!-- #main -->
    </div><!-- #primary -->

我在不使用变量的情况下尝试了它,由于某种原因它只显示了帖子ID的数值 - 我在网上注意到这是这个问题的常见问题。即使在ACF论坛上,我也发现了许多关于此的问题。

希望能帮助其他需要这样做的人。

答案 3 :(得分:0)

将the_field或_get_field附加get_option应该可以。

<h1><?php the_field('heading', get_option('page_for_posts')); ?></h1>

来自其文档https://www.advancedcustomfields.com/resources/value-loading-posts-page/

答案 4 :(得分:-2)

是的,它应该在帖子内,因为该字段是帖子的一部分。