web-dev-qa-db-ja.com

管理UIでカスタムフィールドを標準にする

私は私のWordpress 3のインストールにいくつかの異なるcustom_post_typesを追加しました。それらはすべて互いに少し異なっているので、custom_fieldsに固有の情報を格納する必要があります。しかし、product_idを格納することができる一方で、別のものは格納しません。 1つはsource_urlを持ち、もう1つは持ちません。どのカスタム投稿をどのカスタム投稿で使用するかについてエディタに指示するのではなく、各カスタム投稿にカスタムフィールドをUI自体の一部として含める方法を教えてください。

"daily_cartoon"にアクセスすると、 title caption 、およびメディアのみを要求する画面が表示されます。 .
"daily_product"にアクセスすると、 title price のみを要求する画面が表示されます。 //] summary など.

7
Sampson

こんにちは@ジョナサンサンプソン

カスタム投稿タイプを簡単にするためのプラグインがいくつかあります。また、カスタムフィールドを特定の順序で定義することができるプラグインもあります。

前述したように、複雑なフィールドタイプ用の拡張可能なAPI(および単純なものも)に代わるものとして、このようなユーザーインターフェイスを提供しないものに取り組んでいます。まだ配布用です。たぶん数週間で。

上に挙げたこれらのプラグインは今のところあなたの基本的な必要性を満たすべきであり、私が将来鉱山を使うことにした場合に備えて私は将来これらのすべてによって保存されるデータと鉱山の互換性を保とうとします。

また、この投稿は少し助けになるかもしれません。

4
MikeSchinkel

カスタムフィールドのデータを格納するためにmeta_boxを追加できます。 post_typeに応じて add_meta_box を設定できるため、さまざまな投稿タイプにさまざまなmeta_boxを追加できます。

カスタム投稿タイプnew/edit screeを変更する完全な例については、this post をご覧ください。

5
hannit cohen

私は最近、テーマの範囲内で作業しながら、非常によく似た問題に取り組む必要があります。コードの基礎は、この 投稿 からのもので、私はいくつかのコードを修正しました。

以下は私が修正したコードの最初の部分です。

    add_action('init', 'limited_post_type');
function my_custom_limited_post_type() 
{
  $labels = array(
    'name' => _x('Limited Post Type', 'post type general name'),
    'singular_name' => _x('Film - DVD', 'post type singular name')
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title','editor','author','thumbnail','excerpt', 'page-attributes','custom-fields' ),
    'show_in_nav_menus' => true
  ); 
  register_post_type('limited_post_type', $args);
}

以下は私が修正したコードの2番目の部分です。

foreach ( $scope as $scopeItem ) {
       switch ( $scopeItem ) {
           case "post": {
             // Output on any post screen
             if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" || $post->post_type=="post" )
             $output = true;
             break;}              
            case "page": {
                  // Output on any page screen
                  if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="page-new.php" || $post->post_type=="page" )
            $output = true;
            break;}
             case "limited_post_type": {
                                // Output on limited post_type onlye
            if ((basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" && $post->post_type=="limited_post_type" ) || (basename( $_SERVER['SCRIPT_FILENAME'] )=="post.php" && $post->post_type=="film_dvd" ))
                   $output = true;
                   break;
                  }

あなたが好きなら私にメッセージを送ってください、そして私はあなたの参考のためにあなたに私のfunctions.phpファイルを喜んで送ります。私があなた自身のように引っ張っている髪の多くの夜を経たけれども、これは確かにそれを起こさせる方法です。

0
jnolte