按页面名称访问高级自定义字段

时间:2016-03-10 13:54:18

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

我正在尝试检索绑定到特定页面的所有高级自定义字段。这与迭代帖子不同,我熟悉以下内容:

$posts = get_posts(array(
    'post_type'     => 'post_name',
    'meta_key'      => 'color',
    'meta_value'    => 'red'
));

但是这种方法特定于帖子,不允许我按页面名称检索所有ACF。

我很欣赏有关如何实现这一目标的任何建议。

2 个答案:

答案 0 :(得分:2)

我想到了这样的想法......

1。使用循环

使用WP_Query你可以做这样的事情......

<?php

// WP_Query arguments
$args = array (
    'pagename'               => 'homepage',
);

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_field( "field_name" ); 
    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();

?>

代替&#39;主页&#39;在'pagename' => 'homepage'中,您想要放置页面的页面。当然,代替the_field( "text_field" );您要添加字段/内容。

您还可以按页面ID和其他一些参数进行查询。您可以在此处找到可以使用的所有其他参数: https://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters

2。将第二个参数添加到the_field()函数

更简单的方法,没有自定义循环,只是使用ACF的内置the_field()函数,并添加$post->ID参数作为第二个参数。

<?php the_field('field_name', 123);

这可能是要走的路,因为你只想显示一页的内容,因此不需要循环。

参考:http://www.advancedcustomfields.com/resources/how-to-get-values-from-another-post/

答案 1 :(得分:0)

您可以使用ACF的get_fields()功能 -

<?php $fields = get_fields( $post->ID ); ?>

然后你可以遍历它们或者只是打印数组进行测试。

http://www.advancedcustomfields.com/resources/get_fields/