Wordpressではカスタムフィールドを使用してカスタム投稿タイプを作成できますが、独自のカスタム投稿タイプを作成して維持するカスタムプラグインを作成することは可能ですか(Wordpressのカスタム投稿以外)。
たとえば、WordPortサイトで、カスタム投稿タイプが "Event"で、 "Event Host"、 "Location"、 "Start Date"、 "End Date"、 "Entry Fee"などのカスタムフィールドがある場合、等.
アイデアは、カスタムプラグインを使用すると、データベースから選択したレコードを詳細に表示して並べ替えることができるようになることです。そのため、たとえば、ユーザーは特定のイベントホストによるイベントのみを表示するように要求したり、特定のしきい値の間に参加料を支払うことができます。
また、終了日が経過した場合(つまりイベントが終了した場合)、すべての検索結果にそのイベントが表示されなくなります。
私はこれのほとんどがWordpressを使っているカスタム投稿タイプとカスタムフィールドを使って可能であるかもしれないことを理解します、しかし私はそれの多くが面倒で制限的で遅いと信じます。データベーススキーマとSQL文を書くことができれば、おそらくもっと多くの力が得られるでしょう。
Wordpressはプラグインを通してそのようなレベルのカスタマイズを可能にしますか?
カスタム投稿タイプとWordPressがそのAPIに追加するいくつかの機能のみを使用することが可能です。実際、これがデフォルトです。register_post_type()
を呼び出すと、public
のデフォルト値はFALSE
です。 UIなし、クエリ変数なし、書き換えルールなし、リストテーブルなし、または一般向けの表示設定はありません。あなたはpublic => FALSE
を残して、あなたが必要とする機能だけをオンにして、残りのためにあなたのカスタムハンドラを使うことができます。
例としてプラグイン Log Deprecated Notices を見てください(PHP 4コードスタイルは無視してください)。
$args = array(
'labels' => $labels,
'show_in_menu' => 'tools.php',
'show_ui' => true,
'public' => false,
'capabilities' => array(
'edit_post' => 'activate_plugins',
'edit_posts' => 'activate_plugins',
'edit_others_posts' => 'activate_plugins',
'publish_posts' => 'do_not_allow',
'read_post' => 'activate_plugins',
'read_private_posts' => 'do_not_allow',
'delete_post' => 'activate_plugins',
),
'rewrite' => false,
'query_var' => false,
);
register_post_type( self::pt, $args );
しかし…あなたの投稿タイプが一般公開されていて、他のプラグインからそのコンテンツへのアクセスを妨げている場合、あなたのユーザはいくつかの奇妙な問題にぶつかるかもしれません:
互換性を確認するためには、さらに多くのテストが必要になります。したがって、最も重要な点はそれが可能であるかどうかではなく、結果があなたのプラグインのユーザーのメンタルモデルと一致するかどうかということです。ドキュメンテーションとNice UIだけではそれを修正できません。
私のおすすめは、牛の歩道を舗装することです。フィルタとフックを使用して、可能な限り最後の時点でものを変更します。たとえば、検索結果の場合はpre_get_posts
です。