画像中心のカスタム投稿タイプを作成しますか?


17

画像中心のカスタム投稿タイプを作成するためのヒントはありますか?

詳細を説明するために、私のブログには、以下に示す回転ヘッダー画像があります。

ランダム画像を表示するブログヘッダー

左上の2つの画像はランダム化されており、これらの画像を含むためにのみ存在する特定のページへの添付ファイルとして存在します。カスタムの投稿タイプを使用して、これらを別の方法で保存することが可能かどうか疑問に思っています。新しい投稿タイプ「header-image」を作成しました。ここからどこに進むべきかを考えています。各ヘッダーイメージ「投稿」に1つのイメージ添付ファイルが必要です。ページからランダムな画像を取得する代わりに、ヘッダー画像投稿タイプからランダムな投稿を取得します。これを考えると、

  1. 「新しいヘッダー画像」管理ページから利用できる添付プロセスに簡単なインターフェースを組み込むにはどうすればよいですか?
  2. 投稿のタイトルとコンテンツ入力ボックスを削除して、そのページを整理できますか?

目標は、現在のアップロードプロセスへのより良いインターフェイス作成し、最終的に画像を左画像/右画像としてフラグ付けする分類法作成できるようにすることです。(上の画像を見ると、右側の写真が他の写真の顔を覆っていることがわかります。左側および/または右側のディスプレイに写真をマークすることでこれを回避できます。)後者の場合は問題ありません前者を実装できます。

更新:ここでの回答に基づいて、このセットアップを実装することができました。完全なコードは以下に掲載されています


2
Accept Answerのクレジットを取得する必要がある場合は、その人に答えを与えることをお勧めします。
ライアンギボンズ

回答:


18

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) ) );
}

よくやった!大好きです!
ジョンPブロッホ

サムネイルにリンクを追加するにはどうすればよいですか?管理者とテンプレートの両方で?見た目が良い好印象な!
フローレスクエイドリアン14

これを変更してページに画像を割り当てることはできますか?
ドイドゲイ

13
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を参照してください


1
「featured-image」の値をサポートすると、新しいヘッダーイメージを作成するときに空白の画面が表示されますが、「thumbnail」では「Featured Image」という新しいメタボックスが追加されます。ありがとう!
アニカバックストローム

あなたが正しい。それに関する私の間違い。
ゴールデンアップル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.