Изменение пользовательского типа публикации "Добавить новую" страницу
Я просматривал весь Google в поисках решения этой проблемы. Я пишу плагин пользовательских типов сообщений для работы с входящими посетителями, которые мы получаем. Сначала я написал макет без пользовательских типов сообщений, затем я пришел сюда из поиска Google и увидел скриншот, на котором показан пример пользовательских типов сообщений для хранения информации об адвокатах. Это показало, что кто-то переработал страницу "добавить новое"/"редактировать" для пользовательских типов записей с совершенно новым интерфейс.
Мне было интересно, будут ли у wordpress@stackexchange какие-либо ресурсы для изменения дизайна пользовательских страниц типа "добавление/редактирование".
Однако я не могу вспомнить поисковые запросы, которые я использовал, чтобы найти эту статью.
Спасибо,
-Зак
2 answers
Вопрос/ответ, на который вы ссылаетесь, был Советы по использованию WordPress в качестве CMS.
Скриншоты, опубликованные в этом ответе, были созданы с использованием аргумента register_meta_box_cb
, доступного для пользовательских типов сообщений.
Register_meta_box_cb должен указать функцию обратного вызова, содержащую код для мета-поля.
Для создания мета-поля вы можете использовать встроенную в WordPress функцию add_meta_box, которая также требует функции для сохранения введенных данных когда сообщение будет сохранено.
Вот пример кода, который я создал, чтобы добавить 2 пользовательских мета-поля в тип публикации моего портфолио, который я использую на своем личном веб-сайте.
Тип записи "Проекты", который я создал, содержал этот аргумент:
'register_meta_box_cb' => 'c3m_project_meta',
Первая функция ниже - это функция обратного вызова для register_meta_box_cb. Следующие 2 выводят html-код для мета-полей на странице добавления публикации, а последние 2 сохраняют введенные данные.
function c3m_project_meta() {
add_meta_box('_c3m_project_url', __('Enter Website Url') , 'c3m_project_url', 'project', 'side', 'low');
add_meta_box('_c3m_project_work', __('Enter Work Done on Project') , 'c3m_project_work', 'project', 'side', 'low');
}
function c3m_project_url($post) {
global $post;
echo '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
$projecturl = get_post_meta($post->ID, '_projecturl', true);
echo '<input type="text" name="_projecturl" value="' . $projecturl . '" class="widefat" />' ;
}
function c3m_project_work($post) {
global $post;
echo '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
$projectwork = get_post_meta($post->ID, '_projectwork', true);
echo '<input type="text" name="_projectwork" value="' . $projectwork . '" class="widefat" />' ;
}
add_action('admin_init', 'c3m_project_meta');
function c3m_save_project_meta( $post_id , $post ) {
if ( !wp_verify_nonce( $_POST [ 'banner-buttonmeta_noncename' ], plugin_basename( __FILE__ ) )) { return $post ->ID;
}
if ( !current_user_can( 'edit_post' , $post ->ID )) return $post ->ID;
$c3m_projecturl [ '_projecturl' ] = $_POST [ '_projecturl' ];
foreach ( $c3m_projecturl as $key => $value ) {
if ( $post ->post_type == 'revision' ) return ;
$value = implode( ',' , ( array ) $value );
if (get_post_meta( $post ->ID, $key , FALSE)) {
update_post_meta( $post ->ID, $key , $value ); } else {
add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key );
}
$c3m_projectwork [ '_projectwork' ] = $_POST [ '_projectwork' ];
foreach ( $c3m_projectwork as $key => $value ) {
if ( $post ->post_type == 'revision' ) return ;
$value = implode( ',' , ( array ) $value );
if (get_post_meta( $post ->ID, $key , FALSE)) {
update_post_meta( $post ->ID, $key , $value ); } else {
add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key );
}
}
add_action( 'save_post' , 'c3m_save_project_meta' , 1, 2);
Когда я занимался тем же вопросом, я нашел эту статью довольно интересной:
Как создать Пользовательский Мета-блок WordPress Вместо использования Пользовательских полей WordPress
Изучение того, как создавать пользовательские мета-поля WordPress, позволит вам создавать профессиональные элементы пользовательского интерфейса для себя и своих клиентов. Этот учебник по мета-окну WordPress покажет вам, как добавлять элементы пользовательского интерфейса администратора на экраны редактирования записей/страниц.
Крис прав в своих деньгах, хотя дополнительный ресурс не помешает:)