WordPressのテーマ作成をしていると、ループでカスタムフィールドを利用したり、文字数制限や投稿別にクラス付けなどをつけたりしたときがあります。タイトルやコンテンツを表示する際は通常the_title()やthe_content()などを利用すると思いますが、表示方法を変えたいときはこれらの情報を取得する必要が出てきます。まとめてみました。
(さらに…)
WordPress ループ内で投稿情報を取得する
- 作成日
- 2014/03/12
- 更新日
- 2016年8月16日
カテゴリー「web制作関連」記事一覧ページ。
WordPressのテーマ作成をしていると、ループでカスタムフィールドを利用したり、文字数制限や投稿別にクラス付けなどをつけたりしたときがあります。タイトルやコンテンツを表示する際は通常the_title()やthe_content()などを利用すると思いますが、表示方法を変えたいときはこれらの情報を取得する必要が出てきます。まとめてみました。
(さらに…)
プラグインやCGIなどでメールフォームを設置した際、この機能もついていればいいのにといったことがある。Wordpressプラグインのコンタクトフォームとして有名な「contactform7」は確認画面がついていない。優しい人が汎用性の高いjsファイルなどを作っていて、これらは数ステップで簡単にできるし、確認のアクションを挟んでくれるのでとてもありがたい。だけど、こうしたい場合は?ここを変更したい!といったとき、コードを読み取るのが一苦労だ。フォームの形式が決まっているならば自分で作ってした方が思い通りの動作になると思う。
この記事は、HTMLとjQueryが少し分かる人向けの記事になり、フォームもまた、HTMLとjQueryを編集できる場合に限ります。私も同じように少しだけ分かる人なので、もっといい方法がある気もしますが、メモ的なことも含めて実際に確認画面を挟む流れを書いていこうと思います。
(さらに…)
functions.phpに以下を記載して、カスタムタクソノミー「ショップカテゴリー」、「ショップエリア」を作成、また、「ショップ」というカスタム投稿タイプを作成する。「ショップ」には新しい権限を「capabilities」で指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
function my_custom_init() { /*================================================================================================ カスタムタクソノミー「ショップカテゴリー」の追加 ==================================================================================================*/ /*「ショップカテゴリー」のラベルの設定 --------------------------------------------------------------------------------------------------*/ $shopcat_labels = array( 'name' => "ショップカテゴリ", 'singular_name' => "ショップカテゴリ", 'search_items' => "カテゴリを検索", 'all_items' => "すべてのカテゴリ", 'parent_item' => "親カテゴリ", 'parent_item_colon' => "親:", 'edit_item' => "カテゴリを編集", 'update_item' => "カテゴリを更新", 'add_new_item' => "新規カテゴリ", 'new_item_name' => "新規カテゴリ名", 'menu_name' => "ショップカテゴリ", ); /*「ショップカテゴリー」の設定・追加 --------------------------------------------------------------------------------------------------*/ register_taxonomy( 'shopcat', array( 'shop' ), array( 'hierarchical' => true, 'labels' => $shopcat_labels, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'capabilities' => array('assign_terms' => 'manage_categories' ) )); /*「ショップエリア」のラベルの設定 --------------------------------------------------------------------------------------------------*/ $shoparea_labels = array( 'name' => "ショップエリア", 'singular_name' => "ショップエリア", 'search_items' => "カテゴリを検索", 'all_items' => "すべてのカテゴリ", 'parent_item' => "親カテゴリ", 'parent_item_colon' => "親:", 'edit_item' => "カテゴリを編集", 'update_item' => "カテゴリを更新", 'add_new_item' => "新規カテゴリ", 'new_item_name' => "新規カテゴリ名", 'menu_name' => "ショップエリア", ); /*「ショップエリア」の設定・追加 --------------------------------------------------------------------------------------------------*/ register_taxonomy( 'shoparea', array( 'shop' ), array( 'hierarchical' => true, 'labels' => $shoparea_labels, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'capabilities' => array('assign_terms' => 'manage_categories' ) )); /*================================================================================================ カスタム投稿タイプ「ショップ」の追加 ==================================================================================================*/ /*「ショップ」のラベルの設定 --------------------------------------------------------------------------------------------------*/ $labels = array( // 名前 'name' => "ショップ", // 名前(単数) 'singular_name' => "ショップ", 'add_new' => "新規追加", 'add_new_item' => "新規ショップ追加", 'edit_item' => "ショップを編集", 'new_item' => "新規ショップ", 'view_item' => "表示", 'search_items' => "ショップを検索", 'not_found' => "見つかりません", 'not_found_in_trash' =>"ゴミ箱にはありません", 'parent_item_colon' => '親', 'menu_name' => 'ショップ' ); /*「ショップ」の設定と追加 --------------------------------------------------------------------------------------------------*/ $shop_args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, //--------検索結果に含むかどうか 'show_ui' => true,//--------------------デフォルトUIを表示するかどうか 'query_var' => true,//------------------この投稿に使用する query var の名前 'rewrite' => true,//--------------------このフォーマットでパーマリンクをリライトする 'capability_type' => 'shop',//----------通常はpostだが任意のshopにする 'capabilities' => array('edit_posts' => 'edit_shop', //-------------記事の投稿と編集 'publish_posts' => 'publish_shop', //----------記事の公開 'edit_published_posts' => 'edit_published_shop', //---公開した記事の編集 'edit_others_posts' => 'edit_others_shop', //------他のユーザーの記事の編集 'read_private_posts' => 'read_private_shop', //-----他のユーザーの非公開記事の閲覧 'edit_private_posts' => 'edit_private_shop', //-----他のユーザーの非公開記事の編集 'delete_posts' => 'delete_shop', //-----------記事の削除 'delete_published_posts' => 'delete_published_shop', //-公開した記事の削除 'delete_others_posts' => 'delete_others_shop', //----他のユーザーの記事の削除 'delete_private_posts' => 'delete_private_shop'), //---他のユーザーの非公開記事の削除 'has_archive' => true,//--------------アーカイブページの作成 'hierarchical' => false,//------------階層(親・子)をつけるか 'menu_position' => null, //------------メニューの場所 'supports' => array('title','editor','author','thumbnail','excerpt','comments'),// サポートの種類を設定 'taxonomies' => array( 'shopcat', 'shoparea' ) ); register_post_type('shop',$shop_args); } add_action('init', 'my_custom_init'); |
その後、プラグイン「User Role Editor」で、指定した権限と同名のものを追加していきます。
これもプラグイン「User Role Editor」の「Add Role」でユーザー権限グループを作成し、必要な箇所だけチェックを入れてアップロードします。
「h」はheadingの略で、<h>と</h>で囲まれたものは見出しの意味を持ちます。「h」の後には1~6までの数字をつける必要があり、「<h1>見出し1</h1>」や、「<h2>見出し2</h2>」などのように利用します。この際、<h1>が一番の大見出しとなり、数字が高くなるにつれて小見出しとなっていきます。
また、大見出し、小見出しの順に配置する必要があり、<h1>見出し1</h1><h3>見出し3</h3>のように順番を飛ばしてはいけません。これは表示上問題はありませんが、文章構造としてはNGとなります。そのため、最初にh2が来るのもよくないとされています。
(さらに…)
不特定多数のaタグに対し、それぞれ複数の情報を持たせたいことがあるかと思います。単数の場合、relやtitle属性を取得して動作させてきたのですが、動作が複雑になってくると一つのタグに対し色々な情報を持たせたくなります。HTML5では「data-」を使い任意の属性をつけられると見たことがありますが、自分のサイト以外ではまだHTMLに踏み出していない状態です。onclickで処理するのがが一般的なんでしょうか。
複数の情報を持たせることは大分前から探していたのですが、取りあえずできそうなものを見つけたので記します。しかし若干使いづらい気もするので、また何か見つかったら追記していこうと思います。理想は連想配列を渡したいのですが。。。
(さらに…)
wordpressのパーマリンク設定を/%category%/%post_id%/に設定しWP-PageNaviを利用したら、次のページに飛ばずに固定ページに飛んでしまう。カテゴリーを「news」とすると、http://domain.com/category/news/の場合は問題なくページ送りをできたのですが、http://domain.com/news/としてカテゴリーページを表示していた場合、1ページ目は表示されますがページ送りをすると固定ページにいってしまう。
(さらに…)
WordPressのプラグイン「Custom Field Suite」はAdvanced Custom Fieldより使いやすいと以前紹介させていただいた参考サイトに書いてありました。そしてなによりCustom Field Suiteのループを利用して、カスタムフィールドを追加できる点がすばらしいと思います。
Advanced Custom Fieldsにも似た機能あるらしいですが、何しろ有料アドオンのため考えどころでした。こちらは無料で利用できます。
参考サイト:http://komodo.arrow.jp/wp/733
基本的な使い方には上記の参考サイトを利用した方が分かりやすいのでそちらを見てもらい、今回はCustom Field Suiteのループをテーマ内ではなく投稿入力画面で利用できるようにショートコードを作成してみようというものです。
たとえばIDやクラスを指定しているのでクライアント様の方で追加・削除するときはHTMLを編集しなきゃいけない部分があって、そしてそれが投稿の途中にあるのでカスタムフィールドを何個もつけたくないしどうしようみたいなとき。
ショートコードを作ればHTMLをいじらずに編集でき、ループはカスタムフィールドを投稿別に追加・編集・削除できるのでうってつけかと。入力した値を他のページでも使いたい場合などは投稿タイプを関連させた方もいいかもですが、この場合は投稿画面上で編集して追加したいときに利用するといいと思います。
(さらに…)
私はHTMLを始めるにあたって、いろいろとHTMLとは?というページを見て回っても今一ピンと来ませんでした。それはサイトの仕組みというものを全く知らず、その理数系なイメージから、説明にでてくる様々なカタカナや英字に対し拒否反応を起こしていたからかもしれません。
しかしweb制作にあたってHTMLというものは非常に大事なものであり、ウェブサイトのほとんどが利用しています。HTMLの基礎を学んでおけば非常にすんなりステップアップしていくことができると思います。ある程度のものだけ覚えればサイトは思うように表示されますが、基礎が分からないままコピペや覚えたタグだけで制作していくと、変なところで躓いたり時間がかかってしまうことがあります。私はそのパターンでした。
このページではHTMLとは何か、もう一度復習する意味もこめて時間を掛けて作成していきたいと思います。
webサイトを作成にするにあたってHTMLの勉強が必要らしいと分かった段階の人向けであり、これはほんとのほんとに何も知らない初心者向けの入門書になればと思います。
カラーミーショップでカスタマイズをしている時、共通のテンプレート内で分岐をさせたいことがあるかと思います。特にサイドバーやコンテンツの上にコンテンツ別のバナーなどを貼りたいときや、トップのときだけ上にスライダーを表示させたいときなどです。
それぞれのページにサイドバーを入れれば解決するかもしれませんが、共通部分をそれぞれのテンプレートに入れるのは更新の際にめんどくさいです。
(さらに…)
WordPressについては、色々なサイトで語られていることだし、こうやってわざわざ同じ事をメモする必要もない気もしますが、もう少し掘り下げる意味で書いてみます。とゆうのも、慣れてしまえばインストールはホントに5分で終わってしまうし、プラグインを利用すればカスタマイズもある程度できるようになるし、テーマ内にWordpressのタグを利用した様々な機能だってつけれるようになってくるのですが、私の場合もっぱらいじるのはテーマ内や管理画面、必要であればプラグインの修正くらいで、その他のファイルが何を意味しているかも分からない常態なのです。
Wordpress本体はアップグレード時を考えてあまりいじらないようにした方がいいとどこかで見たので、いじる必要は無いかもしれませんが、仕組みをもっと詳しく分かればよりWordpressに対する理解が深まり、出来ることが増えるんじゃないかという希望を持ちながら時間を掛けて更新していきたいと思います。
(さらに…)