Wordpress自定义元框返回空?

时间:2014-10-29 19:01:07

标签: php wordpress custom-post-type meta-boxes

我为自定义帖子类型(图书)创建了自定义元框(作者)。该框显示在管理员中,但我无法弄清楚如何在我的主题中显示作者。

这是用于创建框的代码:     

/**
 * Adds a meta box to the post editing screen
 */
function prfx_custom_meta() {
    add_meta_box( 'prfx_meta', __( 'Book Author', 'prfx-textdomain' ), 'prfx_meta_callback', 'rabe_books', 'side' );
}
add_action( 'add_meta_boxes', 'prfx_custom_meta' );

/**
 * Outputs the content of the meta box
 */
function prfx_meta_callback( $post ) {
    wp_nonce_field( basename( __FILE__ ), 'prfx_nonce' );
    $prfx_stored_meta = get_post_meta( $post->ID );
    ?>

    <p>
        <label for="meta-text" class="prfx-row-title"><?php _e( 'Example Text Input', 'prfx-textdomain' )?></label>
    </p>

    <?php
}



/**
 * Saves the custom meta input
 */
function prfx_meta_save( $post_id ) {

    // Checks save status
    $is_autosave = wp_is_post_autosave( $post_id );
    $is_revision = wp_is_post_revision( $post_id );
    $is_valid_nonce = ( isset( $_POST[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[ 'prfx_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';

    // Exits script depending on save status
    if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
        return;
    }

    // Checks for input and sanitizes/saves if needed
    if( isset( $_POST[ 'meta-text' ] ) ) {
        update_post_meta( $post_id, 'meta-text', sanitize_text_field( $_POST[ 'meta-text' ] ) );
    }

}
add_action( 'save_post', 'prfx_meta_save' );


/**
 * Adds the meta box stylesheet when appropriate
 */
function prfx_admin_styles(){
    global $typenow;
    if( $typenow == 'post' ) {
        wp_enqueue_style( 'prfx_meta_box_styles', plugin_dir_url( __FILE__ ) . 'meta-box-styles.css' );
    }
}
add_action( 'admin_print_styles', 'prfx_admin_styles' ); ?>

这就是我在模板中放置的内容:

<div class="book-author">by:
    <?php $book_author = get_post_meta( get_the_ID(), 'meta-text', true );
    if (!empty($book_author))  {
        echo $book_author;
    } elseif (empty($book_author)) {
        echo "Why doesnt it work?";
    } ?>
</div>

它不显示作者,而是显示文本“为什么它不起作用?”我想这意味着该值为空。但它不应该。我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如梅维斯所提到的,你的问题就在这里:

<?php _e( 'Example Text Input', 'prfx-textdomain' )?>

http://codex.wordpress.org/Function_Reference/_e

您需要将该框分配给数据点。

这是我们的一个functions.php文件的片段,其中包含:

function css_metadata_box($object, $box) { ?>
<p>
    <label for="custom-css-data">Add custom CSS for this page</label>
    <textarea name="custom-css-data" id="custom-css-data" cols="60" rows="25" tabindex="30" style="width: 97%;"><?php
        echo esc_html( get_post_meta( $object->ID, 'custom-css', true ), 1 );
    ?></textarea>
    <input type="hidden" name="css_meta_box_nonce" value="<?php echo wp_create_nonce( plugin_basename( __FILE__ ) ); ?>" />
</p>
<?php }

add_meta_box('css-data-box', 'Page CSS', 'css_metadata_box', 'page', 'normal', 'high');