- 2015年6月3日
- 社員日記
WordPressの管理画面に独自の表示用の設定項目を作る方法
管理画面でデータを登録してその内容を表示したい!
これだけ見ると何を言っているのかよくわからないかと思いますが…
普通に投稿すればいいんじゃない?って言われそうですがそうではなくて…
例えばタイトルや本文は必要なくてちょっとだけ項目を増やしてWordPress内で表示したいみたいな感じです。伝わりますかね?
勝手に伝わったという前提で書いていきます…
微妙だなーと思う実装例
もしWordPressのデフォルトのままどうにかして表示するとすればカテゴリ(表示用カテゴリ)を作って対応する感じでしょうか?
カテゴリを作ったとしてそのカテゴリIDが1だった場合には
投稿でタイトルと本文を入力してをしてカテゴリを表示用カテゴリを選択する。
実際に表示をさせるには。
※表示用カテゴリは他のものと一緒に表示したくないという前提です。
「通常の表示」
<?php query_posts('cat=-1'); while(have_posts()) : the_post(); ?> 表示したい内容を書く <?php endwhile; ?>
「表示用カテゴリ」
<?php query_posts('cat=1'); while(have_posts()) : the_post(); ?> 表示したい内容を書く <?php endwhile; ?>
とか下記のような感じで
<?php $args = array( 'showposts' => 4, 'category__not_in ' => array(1), //'category__in' => array(1), 'post_type' => array('post'), 'post_status' => array('publish'), ); if ($query->have_posts()) : while ( $query->have_posts() ) : $query->the_post(); ?> 表示したい内容を書く <?php endwhile; endif; ?>
のように書けばまあ対応はできるかなと思います。
まあほんと例えばの話です。実際はこんな実装はしませんが…
別の実装方法(カスタム投稿)
しっかり実装する場合は
カスタム投稿を使って作る事もできるかと思います。こんな感じですかね?
<?php add_action( 'init', 'create_custom_fileds' ); function create_custom_fileds() { register_post_type( 'sample_custom_fileds', array( 'labels' => array( 'name' => __( 'カスタムフィールド' ), 'singular_name' => __( 'sample_custom_fileds' ) ), 'public' => true, 'has_archive' => true, 'menu_position' =>5, 'supports' => array( 'custom-fields'), ) ); } ?>
ただ今回はカスタム投稿を使った場合ではなくプラグインを使用しての紹介をしようかと思います。
カスタム投稿を使っての方法にニーズがあればまたいつか記事として紹介します。たぶんですが…
別の実装方法(プラグインを使って)
Advanced Custom Fields Add-onsの
Advanced Custom Fields: Options Pageを使用してみる事にしました。
$25 AUDなので同じようなプラグインや機能をどうにしかして実装する開発工数を考えると確実に安いです。
購入すると「acf-options-page.zip」というファイルがダウンロードできます。
あとは特に難しい事もなく管理画面からプラグインををアップロードするだけです。
いつも通りプラグインを有効化しましょう。
そうすると左側のメニューの設定の下あたりに「Options」という項目が追加されます。
まずは「Options」をクリックしてみましょう。
そうすると…
「No Custom Field Group found for the options page. Create a Custom Field Group」
と表示がでるのでCreate a Custom Field Groupをクリックして作成してみましょう。
クリックするとカスタムフィールド作成画面に遷移します。
とりあえず必須項目を入れてみましょう。こんな感じでしょうか?
公開ボタンを押してみます。
「Options」をクリックをクリックすると。。。変わらないですね…
まだ「No Custom Field Group found for the options page. Create a Custom Field Group」のままです。
もう一度カスタムフィールドを確認してみると「位置」をオプションページにしていなかったです。
さらにもう一度「Options」をクリックをクリックをするとものすごくシンプルですが表示されました。
管理画面で設定した文字を表示するには
<?php echo get_field('option_test', 'option'); ?>
とか
<?php the_field('option_test', 'option'); ?>
で表示ができるかと思います。
カスタムフィールドはテキストエリアだったり各項目があるので設定したい内容を簡単に設定できるかと思います。
Advanced Custom Fields: Repeater Fieldももっているのであればそちらも設定できます。これも$25 AUDです。
ここで少し管理画面の話に戻りまして。
項目が増えた場合に画面がわかりにくくなるなと言う事があるかと思います。「Options」はsub_pageを作成することができます。
function.phpに下記を追加してみてください。
<?php if( function_exists('acf_add_options_sub_page') ){ acf_add_options_sub_page( 'INDEX' ); acf_add_options_sub_page( 'SINGLE' ); acf_add_options_sub_page( 'ARCHIVE' ); } ?>
設定した名前で画面にサブメニューが追加されるようになりました。
カスタムフィールドに戻り「位置」を設定し直しましょう。
今回のサンプルでは「INDEX」と言うサブメニューにひもづけしましたので「Options」の「INDEX」に表示されるようになりました。
先にも書いていますがカスタム投稿を使った投稿も同様の事ができるかと思います。
用途によってだったり、作成の工数をみながら実装していけばいいかなと思います。
今回はAdvanced Custom Fieldsの各機能と連携ができるのでAdd-onsを追加すればすぐに拡張ができますので便利かなと思います。有料ですがそんなに高くないですし。
またいつかWordPressのネタを書いてみようかと思います。