1

いくつかのカスタム投稿タイプ (CPT) を作成するプラグインを作成中です (すべて問題なく動作します)。これらの CPT の一部には「カスタム書き込みパネル」が必要です。これは基本的に、投稿やページで得られるボグ標準の「編集」ボックスではなく、一連のカスタム メタ ボックスがあることを意味します。

これらの CPT の 1 つは、基本的に不確定な量の値を持つ「動的な」メタ ボックスのセットを必要とします。例を挙げてみます。

(これは私がやっていることではありませんが、私がどのように機能させたいかの適切な例のようです)

「houses」の CPT があり、この CPT のカスタム メタ オプションの 1 つが「bedrooms」であると想像してください。明らかに、異なる家には異なる量の寝室があり、そのすべてに異なるプロパティがあります。したがって、ユーザーが寝室に関するいくつかの異なるプロパティを追加できるようにしたいと思います。

寸法、アスペクト、窓の数、床タイプ

ユーザーが最初の寝室にこれらの詳細を追加したとき、家に 2 番目の寝室がある場合は、「寝室を追加」ボタンをユーザーに持たせたいと思います。これらのメタ ボックスの別のセットが追加され、寝室に関する詳細を入力できるようになります。 2.

この機能を追加するには、javascript が必要であることは理解していますが (書いても構わないこともあります)、貧弱で役に立たない頭脳で苦労しているのは、これらをデータベースに保存する方法です。不要なデータベース テーブルを追加しないように、WordPress メタを使用してこれを実現したいと考えています。

チュートリアルへのポインタは素晴らしいでしょう。または、この種のことをすでに実行しているプラ​​グインのいくつかの例は、非常にありがたいものです。

4

2 に答える 2

2

メタ ボックスの作成に関する非常に優れた記事を次に示します。

次に、上記の記事に基づいて、カスタム投稿タイプごとに特定のメタ ボックスが必要な場合は、次のような if ステートメントを使用してこれを実現できます。

$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID']; $post = get_post($post_id);
$post_meta = array();
if ($post->post_type == 'hardware') { $post_meta[] = array( "type" => "text", "name" => "Input Example", "id" => $shortname."_input_one", "desc" => 'Description', "std" => '');

} elseif ($post->post_type == 'software') {
$post_meta[] = array( "type" => "textarea", "name" => "Text Area Example", "id" => $shortname."_textarea", "desc" => 'Description.', "std" => '', "rows" => "3"); $post_meta[] = array( "type" => "text", "name" => "Input Example", "id" => $shortname."_input_two", "desc" => 'Description', "std" => '', "rows" => "5"); }

$post_id = ...は、IF ステートメントの基になるフックをセットアップするようなものです。

于 2010-10-29T19:51:47.640 に答える
1

これを行う最善の方法は、フォーム内で配列を使用することだと思います。post_meta に保存された値のコレクションがある場合は、それらをポスト (この場合は家) にリンクすることしかできず、どのディメンションがどのフロア タイプに一致するかなどはできません。

ベッドルーム[幅]、ベッドルーム[num_windows]、ベッドルーム[ベッドタイプ] などの各フォーム フィールドの名前がある場合、post_meta テーブル内に配列を格納するので、家のベッドルームのポスト メタを取得するときに、配列の配列を返します(最初のレベルは部屋を表し、2番目のレベルは部屋の属性を表します

必要に応じてさらに一歩進んで、フィールドの名前を bedrooms[i][attribute] にすることもできます。ここで、i は JS 内で維持するカウンターです。そうすれば、すべてのベッドルームに対して 1 つの投稿メタしかありません。

于 2010-10-23T16:57:40.857 に答える