如何使用高级自定义字段作为短代码。我已经在Wordpress functions.php文件中使用了以下代码,但没有运气。
这是我的代码:
function location_date_func( $atts ){
return "<?php the_field('location_date', 658); ?>";
}
add_shortcode( 'location_date', 'location_date_func' );
答案 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;
}