Возвращаемое значение в функции в Wordpress для отображения настраиваемого поля - PullRequest
0 голосов
/ 24 октября 2018

Я не уверен, что поступаю правильно.Вот моя проблема:

function getCustomField() {
    global $wp_query;
    $postid = $wp_query->post->ID;
    echo '<p>'.get_post_meta($postid, 'blog_header', true).'</p>';
    wp_reset_query();

}

С помощью этой функции я могу отображать свое настраиваемое поле почти везде в моем шаблоне с WordPress, когда я вызываю свою функцию getCustomField следующим образом:

<?php getCustomField(); ?>

Но это не совсем то, чего я хочу достичь.В идеале я хочу вернуть значение из этой функции, чтобы по существу сделать то же самое с шорткодом, то же самое, но вместо того, чтобы выводить значение, я хочу вернуть значение и добавить в самом конце:

add_shortcode('custom', 'getCustomField');

Так что я могу назвать это в своей теме следующим образом:

или в цикле только с помощью шорткода [custom].

Конечно, это не работает, где моя ошибка?

Последнее, в удаленном случае это будет работать, если я верну свое значение в самом конце, что-то вроде этого:

global $wp_query;
$postid = $wp_query->post->ID;
wp_reset_query();
return '<p>'.get_post_meta($postid, 'blog_header', true).'</p>';

1 Ответ

0 голосов
/ 24 октября 2018

В шорткоде вы хотите получить идентификатор записи следующим образом:

function getCustomField() {

    $post_id = get_the_ID();
    return '<p>'.get_post_meta( $post_id, 'blog_header', true ).'</p>';
}
add_shortcode( 'custom', 'getCustomField' );

Также может быть целесообразно проверить значение из функции get_post_meta ().в противном случае вы получите пустые теги абзаца.Вы можете сделать это так:

function getCustomField() {

    $post_id = get_the_ID();
    $blog_header = get_post_meta( $post_id, 'blog_header', true );

    if( $blog_header ) {

        return '<p>'.$blog_header.'</p>';

    }else{

        return false;
    }
}
add_shortcode( 'custom', 'getCustomField' );
...