Return Wordpress 中用于显示自定义字段的函数内的值

Return value within function in Wordpress to display a custom field

我不确定我做的是否正确。这是我的问题:

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

}

使用此功能,当我像这样调用我的函数 getCustomField 时,我可以使用 wordpress 在我的模板中的几乎所有位置显示我的自定义字段:

<?php getCustomField(); ?>

但这不是我想要达到的安静。理想情况下,我想 return 这个函数的一个值,基本上用简码做同样的事情,所以同样的事情,而不是回显我想要 return 值的值,并在最后添加:

add_shortcode('custom', 'getCustomField');

所以我可以这样在我的主题中调用它:

或在循环内使用简码 [custom]。

当然不行,我的错误在哪里?

最后一件事,在远程情况下,如果我在最后 return 我的价值,它将起作用,像这样:

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

在短代码中,您想要像这样检索 post id:

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