web-dev-qa-db-ja.com

投稿作成ページの外観を変更する方法

あなたが投稿タイプを選択することを可能にする "New Post"ページのドロップダウンがあるところにそれを設定する方法(プラグイン、または何か他のもの)があります。 「新規投稿」ページに20種類のカスタムフィールドを設定して、ユーザーを混乱させずに投稿できます。

また、異なる値タイプ(テキストエリア、リスト、ファイルアップロードなど)を持つカスタムフィールドを作成できるプラグインやその他のものはありますか。

2
Jo Albright

これは何度も尋ねられました:

コーディングしていないのであれば、次のようなプラグインを使うことができます。

お役に立てれば

1
Bainternet

私はあなたの懸念を理解しています。あなたが多くの投稿タイプを取得した場合、WordPressの管理者メニューはすぐに扱いにくくなります。私があなたのためにしたことはあなたが求めたもののような何かを実行することです。このようなカスタム投稿タイプのドロップダウンリストを持つ新しい投稿ページの投稿編集ページメタボックスを作成します。

WordPress Custom Post Type Selector Metabox

そして、これがドロップダウンモードのカスタム投稿タイプの集まりの様子です。

これは、jQueryとJavascriptを使用して、選択したブラウザのDOM内のwindow.location.hrefを次のURLパターンのいずれかを使用して変更することです。

http://example.com/wp-admin/post-new.php // This is for post_type=post
http://example.com/wp-admin/post-new.php?post_type=page 
http://example.com/wp-admin/post-new.php?post_type=actor
http://example.com/wp-admin/post-new.php?post_type=movie
http://example.com/wp-admin/post-new.php?post_type=car 
http://example.com/wp-admin/post-new.php?post_type=event
http://example.com/wp-admin/post-new.php?post_type=performer

私が心配していることの一つは、これの使いやすさですが、私はユーザーが任意の入力フィールドの値を変更した後にドロップダウンを無効にするようにそれを書きました。そうすれば、ユーザーは自分が取り組んでいたことすべてを誤って失うことはありません。

コードが続き、これをあなたのテーマのfunctions.phpファイル、またはあなたが書いているかもしれないプラグイン用の.phpファイルに置くことができます。

add_action('add_meta_boxes', 'add_meta_boxes_post_type_switcher',10,2);
function add_meta_boxes_post_type_switcher($post_type,$post) {
  global $pagenow;
  if ($pagenow=='post-new.php') {
    require_once(ABSPATH . 'wp-admin/includes/template.php');
    add_meta_box('post_type_switcher','Change Post Type',
                 'post_type_switcher',$post_type,'side','high');
  }
}
function post_type_switcher($post,$metabox) {
  $post_types = get_post_types();
  $new_post_url = admin_url('post-new.php');
  $js =<<<JS
<script type="text/javascript">
jQuery(document).ready(function ($) {
  $("#post-type-switcher-selector").change(function() {
    var post_type = $(this).find(":selected").val();
    var new_post_type_url = "{$new_post_url}?post_type=" + post_type;
    if (post_type=="post" && "{$new_post_url}"!=window.location.href) {
      window.location.href = "{$new_post_url}";
    } else if (new_post_type_url!=window.location.href) {
      window.location.href = new_post_type_url;
    }
  });
  $(".wp-admin #wpbody-content :input").change(function() {
    $("#post-type-switcher-selector").attr("disabled","disabled");
  });
});
</script>
JS;
  echo $js;
  echo '<select id="post-type-switcher-selector">';
  foreach ( $post_types as $post_type ) {
    $post_type_object = get_post_type_object($post_type);
    if ($post_type_object->publicly_queryable && $post_type!='attachment') {
      echo "\n\t<option ";
      if ( $post_type == $post->post_type ) // Make default first in list
        echo "selected='selected' ";
      echo "value='{$post_type}'>";
      echo $post_type_object->labels->singular_name;
      echo "</option>";
    }
  }
  echo '</select>';
}

だからコードがあり、それはあなたのために働くはずです。コードの詳細について質問がある場合は、質問してください。 しかし、代わりに このような統合メニューを検討することをお勧めします 代わりに、ユーザーにとってより一貫したメンタルモデルが作成されると思いますが、選択はあなた次第です。

3
MikeSchinkel