2012-06-27 4 views
1

Я пытаюсь добавить пользовательский тип сообщения в Wordpress. Я могу зарегистрировать тип настраиваемого сообщения со следующим кодом, чтобы он был видимым в строке меню слева.Custom post type breaks wordpress себя

add_action('init', 'add_member'); 

function add_member() { 

$args = array(
    'label' => __('Members'), 
    'singular_label' => __('Member'), 
    'public' => true, 
    'show_ui' => true, 
    'capability_type' => 'post', 
    'hierarhical' => false, 
    'rewrite' => true, 
    'supports' => array('title', 'editor', 'thumbnail') 
); 

register_post_type('member', $args); 

} 

Но проблема в том, что когда я пытаюсь добавить настраиваемый мета-ящик, он разбивает сайт.

add_action("admin_init", "admin_init"); 

function admin_init() { 

add_meta_box("memberInfo-meta", "Member Options", "meta_options", "member", "side", "low"); 

} 

add_action('save_post', 'save_member'); 

function meta_options() { 

global $post; 
$custom = get_post_custom($post->ID); 
$member = $custom["member"][0]; 

} 

<label>Member:</label><input name="member" value="<?php echo $member; ?>" /> 

function save_member() { 

global $post; 
update_post_meta($post->ID, "member", $_POST["member"]); 

} 

Что я делаю неправильно?

Спасибо.

ответ

1

Не знаете, как и что вам нужно сделать, но есть очень хороший, маленький и аккуратный плагин под названием «custom-post-type-ui» с большими возможностями. Давно я был в борьбе, как вы, но этот плагин облегчил мне жизнь. См. here.

+0

+1 для пользовательского пользовательского интерфейса типа сообщения. Я бы также добавил плагин для дополнительных пользовательских полей как лучший способ добавить настраиваемые поля к вашим пользовательским типам сообщений. –

1

Просто взглянув на ваш код, но. Вы пытаетесь подключить свою функцию под названием «admin_init» к hook_ admin_init. Это явно не сработает. Попробуйте изменить функцию «admin_init» на что-то другое.

Вы можете активировать DEBUG в своем wp_config (или проверить свой error_log), чтобы действительно узнать, что заставляет его сломаться.

0

Вы должны подключить свою функцию к "add_meta_boxes" действие.

вместо:

add_action("admin_init", "admin_init"); 

использование:

add_action("add_meta_boxes", "admin_init"); 

также я хотел бы предложить вам использовать префиксы для функций: вместо того, позвонив function admin_init вы могли бы назвать его myplugin_admin_init , Это поможет избежать ошибок из-за именования функций.