使用Wordpress Functions.php文件将ACF字段作为短代码返回

时间:2014-07-09 21:21:31

标签: php wordpress shortcode advanced-custom-fields

如何使用高级自定义字段作为短代码。我已经在Wordpress functions.php文件中使用了以下代码,但没有运气。

这是我的代码:

function location_date_func( $atts ){

    return "<?php the_field('location_date', 658); ?>";
}
add_shortcode( 'location_date', 'location_date_func' );

4 个答案:

答案 0 :(得分:1)

您需要正确注册短代码,并使其返回要显示的数据,而不是返回包含php代码的字符串:

function location_date_func( $atts ){
    //return string, dont echo it, so use get_field, not the_field
    return get_field('location_date', 658);
}
//create function to register shortcode
function register_shortcodes(){
   add_shortcode( 'location_date', 'location_date_func' );
}
// hook register function into wordpress init
add_action( 'init', 'register_shortcodes');

或者如果你使用的是php 5.3+,你可以使用自治函数来获得相同的结果:

add_action('init', function(){
    add_shortcode('location_date', function(){
        return get_field('location_date', 658);
    });
});

答案 1 :(得分:1)

让它发挥作用!

function location_date_func( $atts ){
    return apply_filters( 'the_content', get_post_field( 'location_details', 658 ) );
        }
add_shortcode( 'location_date_sc', 'location_date_func' );

答案 2 :(得分:0)

如果您想使用the_field()返回ACF字段的值,则已有built in shortcode来执行该操作。

[acf field="location_date" post_id="658"]

如果您想使用[location_date]短代码重现它,则需要使用get_field()返回而不是回显该值。语法方面,您的代码唯一的问题是您不需要双引号或<?php标记,因为它应该已经在PHP块中。它在功能上与[acf]短代码相同,但不接受post_id参数。此示例将被硬编码为发布ID 658,除非您将其修改为接受$atts中的ID或使用global $post;

function location_date_func( $atts ){
    return get_field( 'location_date', 658 );
}
add_shortcode( 'location_date', 'location_date_func' );

答案 3 :(得分:0)


add_shortcode('location_start_your_application_group', 'start_your_application_group');

function start_your_application_group() {
    $start_your_application_group = '';
    $start_your_application_group .= '<section class="start-your-application">';
     if ( have_rows( 'start_your_application_group', 'option' ) ) : 
         while ( have_rows( 'start_your_application_group', 'option' ) ) : the_row(); 
           $heading = get_sub_field( 'heading' );
             $content = get_sub_field( 'content' );

             if ( $heading !== '' ) {
                    $start_your_application_group .= '<h3 class="start-your-application__heading">' . $heading . '</h3>';
             }
             if ( $content !== '' ) {
                $start_your_application_group .= '<div class="start-your-application__content">' . $content . '</div>';
             }

             $image = get_sub_field( 'image' );
             if ( $image ) { 
                $start_your_application_group .= '<div class="start-your-application__image-container"><img class="start-your-application__image" src="' . $image['url'] .'" alt="' . $image['alt'] . '" /></div>';
            } 
        endwhile;
    endif;
    $start_your_application_group .= '</section>';

    return $start_your_application_group;
}