1

这是我所有的代码......可能我做错了什么,导致保存功能不起作用。我不知道在哪里以及如何做错了。。我为扬声器选择创建了 CPT 和元框,其中包含多个选择项和另一个元框,其中包含无线电流的详细信息....可能我放了很多元框...我不知道帮帮我

<?php
add_action('init', 'speaker_manager');

function speaker_manager() {
    $labels = array(
        'name'               => __('Speakers'),
        'singular_name'      => __('speaker'),
        'add_new'            => __('Aggiungi Speaker'),
        'add_new_item'       => __('Nuovo Speaker'),
        'edit_item'          => __('Modifica Speaker'),
        'new_item'           => __('Nuovo Speaker'),
        'all_items'          => __('Elenco Speaker'),
        'view_item'          => __('Visualizza '),
        'search_items'       => __('Cerca '),
        'not_found'          => __('Speaker non trovato'),
        'not_found_in_trash' => __('Speaker non trovato nel cestino'),
        );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'show_ui'    => true,
        'rewrite'            => array('slug' => 'speaker'),
        'publicly_queryable' => true,
        'has_archive'        => true,
        'capability_type' => 'post',
        'hierarchical'       => false,
        'menu_icon' => get_stylesheet_directory_uri() . '/images/speakers.png',
        'menu_position'      => 5,
        'supports'           => array(
        'title',
        'editor',
        'thumbnail'
        ),
        );

    register_post_type('speaker', $args);
}

if (function_exists('add_theme_support')) {
    add_theme_support('post-thumbnails');
    set_post_thumbnail_size( 220, 150 );
}

add_action("admin_init", "speaker_manager_add_meta");

function speaker_manager_add_meta(){
    add_meta_box("speaker-meta", "Social",   "speaker_manager_meta_options", "speaker",   "normal", "high");
}

function speaker_manager_meta_options($post)
{
    ?>
        <p>Aggiungi i profili social:</p>
        <p><label for="speaker_social_link">Link al sito</label>
        <input type="text" id="speaker_social_link" name="speaker_social_link"
        value="<?php echo get_post_meta($post->ID, 'speaker_social_link', true); ?>"/></p>

    <?php
}

add_action('save_post', 'save_speaker_social_link');
function save_speaker_social_link($post_id)
{
    global $post;
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){
        //if you remove this the sky will fall on your head.
        return;
    }else{
        update_post_meta($post_id, 'speaker_social_link',   esc_url($_POST['speaker_social_link']));

    }
}

add_filter('manage_speaker_posts_columns', 'columns_speaker');
function columns_speaker($old_columns)
{
    $speaker_col = array(
        'cb'     => '<input type="checkbox">',
        'img'    => 'Immagine',
        'title'  => __('Speakers'),
        'link' => 'link',
        );
    return $speaker_col;
}

add_action('manage_speaker_posts_custom_column', 'get_speaker_columns', 10, 2);
function get_speaker_columns($col, $post_id)
{
    switch($col) {
        case 'img':
        if(has_post_thumbnail($post_id)) {
            echo get_the_post_thumbnail($post_id);
        } else {
            echo 'Nessuna immagine!';
        }
        break;
        case 'link':
        echo get_post_meta($post->ID, 'speaker_social_link', true);
        default:
        break;
    }
}
4

1 回答 1

0

您的代码将字段保存在元框中,但您应该add_meta_box + save_post在 WPSE 上寻找好的示例。

对于列,您不应该替换原件,而是添加您自己的(并且您不需要cb):

function columns_speaker($old_columns)
{
    $new_columns = array(
        'img'    => 'Immagine',
        'title'  => __('Speakers'),
        'link' => 'link',
    );
    return array_merge( $new_columns, $old_columns );
}

get_speaker_columns您遇到错误时,它不是$post->IDbut $post_id

于 2013-10-26T15:26:12.257 回答