通过slug从不同的CPT调用ACF

时间:2016-12-06 11:02:23

标签: php wordpress advanced-custom-fields

我想将CTP中创建的自定义字段回显到窗口小部件。

我通常会使用类似下面的内容从页面ID中调用字段,但由于我的CTP使用了slug而不是ID,我正在寻找有关如何执行此操作的建议。

<?php
$other_page = 173;
?>

<?php the_field('shop_content_box', $other_page); ?>

提前致谢!

1 个答案:

答案 0 :(得分:0)

实际上,任何CPT都有自己的slu ..非自定义帖子类型(例如帖子,页面或附件)的方式与他们相同(分别为postpageattachment)。

但请注意不要将自定义帖子类型 与该类型的实际帖子混淆。 Wordpress中的任何帖子(当然包括CPT的帖子)都有一个ID。如果您想使用任何其他帖子/页面的ACF get_fieldthe_field查询自定义字段值,您必须使用该ID,如您的示例所示:

<?php the_field('shop_content_box', $other_page); ?>

所以,如果你只知道$other_page_slug (我想知道你如何单独使用slug ...)你应该检索它的Post对象。请参阅:Get a post by its slug

<?php
function the_field_by_slug( $field, $slug, $cpt = 'post' ) {
    $args = [
        'name'           => $slug,
        'post_type'      => $cpt,
        'post_status'    => 'publish',
        'posts_per_page' => 1
    ];
    $my_post = get_posts( $args );
    if( $my_post ) {
        the_field( $field, $my_post->ID );
    }
}
the_field_by_slug( 'shop_content_box', $other_post_slug, $custom_post_type_slug );
?>