Intereting Posts
Добавить поле в таблицу пользователя в базе данных при нажатии ссылки Список POSTS в WordPress по просмотрам Как добавить содержимое страницы на другую страницу Как я могу применять фильтры в своем классе, которые расширяют Walker_Nav_Menu? Как добавить сообщения без категории в категорию Переписать правила для короткого URL-адреса Измененный запрос домашней страницы не дает ожидаемых результатов Отображение заголовка страницы на index.php Как получить current_cat в navbar, в одном сообщении Изменить URL-адрес WordPress для новообразованных сообщений или страниц Ошибка при установлении соединения с базой данных. Многосайтовый сайт с дочерним узлом не существует Тема Divi: изменить цвет наложения по умолчанию от синего до черного Сохранение изменений метаданных для пользовательских типов сообщений Разделить сообщения на 2 отдельных потока Адрес WordPress (URL) Возвращает назад

Тип пользовательского вложения

Я хочу создать пользовательский тип публикации «фотография», в котором используется одна и та же панель редактирования / загрузки приложения. Точное использование таких же панелей для типа «прикрепления», но с именем «фотография». Является ли это возможным?

В настоящий момент это невозможно сделать с WordPress 3.5. Я открыл для него идею: http://wordpress.org/extend/ideas/topic/custom-attachment-type Поддержка, если вам нравится идея, пожалуйста.

Добавление дополнительных полей

function add_image_attachment_fields_to_edit( $form_fields, $post ) { // Remove the "Description" field, we're not using it unset( $form_fields['post_content'] ); // Add description text (helps) to the "Title" field $form_fields['post_title']['helps'] = 'Use a descriptive title for the image. This will make it easy to find the image in the future and will improve SEO.'; // Re-order the "Caption" field by removing it and re-adding it later $form_fields['post_excerpt']['helps'] = 'Describe the significants of the image pertaining to the site.'; $caption_field = $form_fields['post_excerpt']; unset($form_fields['post_excerpt']); // Re-order the "File URL" field $image_url_field = $form_fields['image_url']; unset($form_fields['image_url']); // Add Caption before Credit field $form_fields['post_excerpt'] = $caption_field; // Add a Credit field $form_fields["credit_text"] = array( "label" => __("Credit"), "input" => "text", // this is default if "input" is omitted "value" => esc_attr( get_post_meta($post->ID, "_credit_text", true) ), "helps" => __("The owner of the image."), ); // Add a Credit field $form_fields["credit_link"] = array( "label" => __("Credit URL"), "input" => "text", // this is default if "input" is omitted "value" => esc_url( get_post_meta($post->ID, "_credit_link", true) ), "helps" => __("Attribution link to the image source or owners website."), ); // Add Caption before Credit field $form_fields['image_url'] = $image_url_field; return $form_fields; } add_filter("attachment_fields_to_edit", "add_image_attachment_fields_to_edit", null, 2); 

Сохранить данные как пользовательские поля

 function add_image_attachment_fields_to_save( $post, $attachment ) { if ( isset( $attachment['credit_text'] ) ) update_post_meta( $post['ID'], '_credit_text', esc_attr($attachment['credit_text']) ); if ( isset( $attachment['credit_link'] ) ) update_post_meta( $post['ID'], '_credit_link', esc_url($attachment['credit_link']) ); return $post; } add_filter("attachment_fields_to_save", "add_image_attachment_fields_to_save", null , 2); 

Отображать прикрепленные пользовательские поля

 function base_image_credit( $post_ID = null ) { // Get the post ID of the current post if not set if ( !$post_ID ) { global $post; $post_ID = $post->ID; } // Get all the attachments for the current post (object stdClass) $attachments = get_children('post_type=attachment&post_parent=' . $post->ID); // If attachments are found if ( isset($attachments) && !empty($attachments) ) { // Get the first attachment $first_attachment = current($attachments); $attachment_fields = get_post_custom( $first_attachment->ID ); // Get custom attachment fields $credit_text = ( isset($attachment_fields['_credit_text'][0]) && !empty($attachment_fields['_credit_text'][0]) ) ? esc_attr($attachment_fields['_credit_text'][0]) : ''; $credit_link = ( isset($attachment_fields['_credit_link'][0]) && !empty($attachment_fields['_credit_link'][0]) ) ? esc_url($attachment_fields['_credit_link'][0]) : ''; // Output HTML if you want $credit = ( $credit_text && $credit_link ) ? "Image provided by <a href='$credit_link'>$credit_text</a>" : false; } return $credit; } 

Использование функции отображения графического изображения

Эта функция может использоваться в любом месте плагина или темы. Я использовал функциональность на single.php, как это

 <?php if( function_exists('base_image_credit') ) echo base_image_credit(); ?> 

Учебный курс

С уважением

Вы все равно можете добавить коды в файл functions.php вашей темы, чтобы он работал.

 function be_attachment_field_credit( $form_fields, $post ) { $form_fields['be-photographer-name'] = array( 'label' => 'Photographer Name', 'input' => 'text', 'value' => get_post_meta( $post->ID, 'be_photographer_name', true ), 'helps' => 'If provided, photo credit will be displayed', ); $form_fields['be-photographer-url'] = array( 'label' => 'Photographer URL', 'input' => 'text', 'value' => get_post_meta( $post->ID, 'be_photographer_url', true ), 'helps' => 'Add Photographer URL', ); return $form_fields; } add_filter( 'attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2 ); /** * Save values of Photographer Name and URL in media uploader * * @param $post array, the post data for database * @param $attachment array, attachment fields from $_POST form * @return $post array, modified post data */ function be_attachment_field_credit_save( $post, $attachment ) { if( isset( $attachment['be-photographer-name'] ) ) update_post_meta( $post['ID'], 'be_photographer_name', $attachment['be-photographer-name'] ); if( isset( $attachment['be-photographer-url'] ) ) update_post_meta( $post['ID'], 'be_photographer_url', esc_url( $attachment['be-photographer-url'] ) ); return $post; } add_filter( 'attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2 ); ?> 

Если вы хотите отображать поля в своем шаблоне вложений, просто вставьте следующие коды внутри цикла:

 echo get_post_meta($post->ID, 'be_photographer_url', true); 

Если вы хотите отображать поля для вашего избранного изображения в шаблоне архива или любом другом шаблоне, просто используйте:

 echo get_post_meta(get_post_thumbnail_id(), 'be_photographer_url', true);