2014-07-09 2 views
1

어떻게 단축형으로 고급 사용자 정의 필드를 사용합니까? Ive는 Wordpress functions.php 파일에서 다음 코드를 사용했지만 행운은 없습니다.Wordpress Functions.php 파일을 사용하여 Shortcode로 ACF 필드를 반환하십시오.

당신은 제대로 단축 코드를 등록하고 표시 할 데이터를 반환 할 필요가
function location_date_func($atts){ 

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

답변

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); 
    }); 
}); 
+0

php5.3을 사용하지 않지만 코드는 작동하지 않습니다. – johnnyr209

+0

@ johnnyr209이 짧은 코드를 정확히 사용하려고하십니까? 제공된 shortcode doublesharp는 잘 작동해야합니다. – Steve

+0

내장 단축 코드는 ACF 필드에서만 작동하며 기본 Wordpress 필드에서는 작동하지 않습니다. – johnnyr209

0

원한다면 the_field()을 사용하여 ACF 필드의 값을 반환하려면 이미 built in shortcode이 있어야합니다. 당신이이 [location_date] 단축 코드를 사용하여 재생하려는 경우

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

, 당신은 값을 에코보다는 돌아 get_field()를 사용해야합니다. 문법적으로 코드에서 유일한 문제는 이중 따옴표 나 <?php 태그가 필요하지 않다는 것입니다. PHP 블록 안에 있어야하기 때문입니다. 기능적으로 [acf] shortcode와 같지만 post_id 인수를 허용하지 않습니다. 이 예는 ID 번호를 $atts의 일부로 수락하도록 수정하거나 global $post을 사용하지 않으면 ID 658을 게시하기 위해 하드 코딩됩니다.

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

기본 ACF 단축 코드는 ACF 필드에서만 작동하며 기본 Wordpress 필드에서는 작동하지 않습니다. 제공된 기능 코드가 작동하지 않습니다. 생각해 보면 ACF 게시물 ID – johnnyr209

+0

과 관련이있을 수 있습니다. 어쩌면이 문제를 이해하지 못할 수도 있습니다. 일반적인 WordPress 사용자 정의 필드를 사용하려면 ACF와 아무 관련이 없습니다. WordPress 커스텀 필드를 사용한다면 표준'get_post_meta (post_id, 'meta_key', single)' – doublesharp

+0

을 사용해야합니다. – johnnyr209

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');