annikabackstrom
  • 0
Гуру

Создание пользовательского типа поста, ориентированного на изображение?

  • 0

Есть ли у кого-нибудь советы по созданию пользовательского типа поста, ориентированного на изображение?

Чтобы уточнить, мой блог имеет вращающиеся изображения заголовка, показанные ниже:

Заголовок блога со случайными изображениями

Два изображения в левом верхнем углу рандомизированы и существуют как вложения к определенной странице, которая существует только для того, чтобы содержать эти изображения. Мне интересно, возможно ли хранить их по-другому, используя пользовательские типы сообщений. Я создал новый тип сообщения, «заголовок-изображение», и я пытаюсь понять, куда идти дальше. Я хотел бы, чтобы у каждого «сообщения» с изображением заголовка было одно вложение изображения. Вместо того, чтобы извлекать случайные изображения со страницы, я извлекал случайные сообщения из типа сообщений с заголовком-изображением. Учитывая это,

  1. Как я могу включить простой интерфейс в процесс прикрепления, доступный на странице администрирования «Новое изображение заголовка»?
  2. Могу ли я удалить поля ввода заголовка сообщения и содержимого, чтобы не загромождать эту страницу?

Цель состоит в том, чтобы создать лучший интерфейс для текущего процесса загрузки и, в конечном итоге, создать таксономию для пометки изображений как левое изображение/правое изображение. (Глядя на изображение выше, вы можете видеть, что фотография справа закрывает лицо на другой фотографии. Я мог бы избежать этого, пометив фотографии для левого и/или правого отображения.) Последнее не будет проблемой, если Я могу реализовать первое.

Обновление: на основе ответа здесь я смог реализовать эту настройку. Полный код размещен ниже.

Share
  1. Я бы посоветовал вам дать человеку ответ, который привел вас туда, где вам нужно, чтобы получить кредит «Принять ответ».

    • 0
  2. Первоначальный ответ GoldenApple дал мне толчок, который мне нужен, чтобы закончить это.

    functions.php

    Вот полный код, который я использую, чтобы добавить новый тип сообщения «header-image» и соответствующим образом изменить другие экраны администратора:

    /**
     * Register the Header Image custom post type.
     */
    function sixohthree_init() {
        $labels = array(
            'name' => 'Header Images',
            'singular_name' => 'Header Image',
            'add_new_item' => 'Add Header Image',
            'edit_item' => 'Edit Header Image',
            'new_item' => 'New Header Image',
            'view_item' => 'View Header Image',
            'search_items' => 'Search Header Images',
            'not_found' => 'No Header Images found',
            'not_found_in_trash' => 'No Header Images found in Trash'
        );
    
        $args = array(
            'labels' => $labels,
            'public' => false,
            'show_ui' => true,
            'supports' => array('thumbnail')
        );
    
        register_post_type( 'header-image', $args );
    }
    add_action( 'init', 'sixohthree_init' );
    
    /**
     * Modify which columns display when the admin views a list of header-image posts.
     */
    function sixohthree_headerimage_posts_columns( $posts_columns ) {
        $tmp = array();
    
        foreach( $posts_columns as $key => $value ) {
            if( $key == 'title' ) {
                $tmp['header-image'] = 'Header Image';
            } else {
                $tmp[$key] = $value;
            }
        }
    
        return $tmp;
    }
    add_filter( 'manage_header-image_posts_columns', 'sixohthree_headerimage_posts_columns' );
    
    /**
     * Custom column output when admin is view the header-image post list.
     */
    function sixohthree_headerimage_custom_column( $column_name ) {
        global $post;
    
        if( $column_name == 'header-image' ) {
            echo "<a href='", get_edit_post_link( $post->ID ), "'>", get_the_post_thumbnail( $post->ID ), "</a>";
        }
    }
    add_action( 'manage_posts_custom_column', 'sixohthree_headerimage_custom_column' );
    
    /**
     * Make the "Featured Image" metabox front and center when editing a header-image post.
     */
    function sixohthree_headerimage_metaboxes( $post ) {
        global $wp_meta_boxes;
    
        remove_meta_box('postimagediv', 'header-image', 'side');
        add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'header-image', 'normal', 'high');
    }
    add_action( 'add_meta_boxes_header-image', 'sixohthree_headerimage_metaboxes' );
    
    /**
     * Enable thumbnail support in the theme, and set the thumbnail size.
     */
    function sixohthree_after_setup() {
        add_theme_support( 'post-thumbnails' );
        set_post_thumbnail_size(150, 100, true);
    }
    add_action( 'after_setup_theme', 'sixohthree_after_setup' );
    

    Скриншоты администратора

    Список постов с изображениями в шапке

    Редактирование изображений заголовков

    Код шаблона

    $header_images = get_posts('post_type=header-image&orderby=rand&numberposts=2');
    
    foreach( $header_images as $idx => $post ) {
        setup_postdata($post);
        the_post_thumbnail('post-thumbnail', array('class' => 'snapshot snapshot' . ($idx+1) ) );
    }
    
    • 0
  3. function register_header_image() {
         register_post_type( 'header-image', 
                             array( 
                                 'label'=>'Header Images',
                                 'name'=>'Header Images',
                                 'singular_name'=>'Header Image',
                                 'public'=>true,
                                 'show_ui'=>true,
                                 'hierarchical'=>true,
                                 'supports'=>array('thumbnail') ) );
    }
    
    add_action ('init','register_header_image');
    add_theme_support( 'post-thumbnails' );
    

    Это должно зарегистрировать ваш тип сообщения только с полем для избранного изображения. См. кодекс http://codex.wordpress.org/Function_Reference/register_post_type для списка передаваемых аргументов.

    • 0

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

You must login to add an answer.