janochen
  • 0
Мастер

Как отобразить эти метаданные (массив) в виде функции (созданной с помощью пользовательской панели записи)?

  • 0

Я использую следующий код для создания пользовательских панелей записи:

<?php

$key = "project";
$meta_boxes = array(
    "project_services" => array(
        "name" => "project_services",
        "title" => "Services",
        "description" => "List the services provided for the project."),
    "project_name" => array(
        "name" => "project_name",
        "title" => "Name",
        "description" => "Write the name of the project."),
    "project_overview" => array(
        "name" => "project_overview",
        "title" => "Overview",
        "description" => "Write an overview of the project.")
    );

function create_meta_box() {
    global $key;

    if( function_exists( 'add_meta_box' ) ) {
        add_meta_box( 'new-meta-boxes', ucfirst( $key ) . ' Description', 'display_meta_box', 'post', 'normal', 'high' );
    }
}

function display_meta_box() {
    global $post, $meta_boxes, $key;
?>

<div class="form-wrap">

<?php
    wp_nonce_field( plugin_basename( __FILE__ ), $key . '_wpnonce', false, true );

    foreach($meta_boxes as $meta_box) {
        $data = get_post_meta($post->ID, $key, true);
?>

<div class="form-field form-required">
<label for="<?php echo $meta_box[ 'name' ]; ?>"><?php echo $meta_box[ 'title' ]; ?></label>
<input type="text" name="<?php echo $meta_box[ 'name' ]; ?>" value="<?php echo htmlspecialchars( $data[ $meta_box[ 'name' ] ] ); ?>" />
<p><?php echo $meta_box[ 'description' ]; ?></p>
</div>

<?php } ?>

</div>
<?php
}

function save_meta_box( $post_id ) {
    global $post, $meta_boxes, $key;

    foreach( $meta_boxes as $meta_box ) {
        $data[ $meta_box[ 'name' ] ] = $_POST[ $meta_box[ 'name' ] ];
    }

    if ( !wp_verify_nonce( $_POST[ $key . '_wpnonce' ], plugin_basename(__FILE__) ) )
        return $post_id;

    if ( !current_user_can( 'edit_post', $post_id ))
        return $post_id;

    update_post_meta( $post_id, $key, $data );
}

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

<?php $data = get_post_meta( $post->ID, 'project', true ); ?>
<p><?php echo $data[ 'project_services' ]; ?></p>

Но я хотел бы назвать это так:

<p><?php project_services(); ?></p>

Какие-либо предложения?

Share
  1. Попробуй это?

    <?php        
    function get_project_services() {    
             global $post;
             $data = get_post_meta( $post->ID, 'project', true );
             $project_services = $data['project_services'];    
             return $project_services;    
    }
    ?>
    

    Затем в файле шаблона:

    <p><?php echo get_project_services(); ?></p>
    

    Я думаю, это сделает то, что вы просите?

    (Отредактировано, чтобы соответствовать вашему комментарию.)

    • 0

Оставить ответ

You must login to add an answer.