WordPressにて、ランダムの記事をAjaxを用いて表示する方法をご紹介します。サイドバーに常に入れ替わるランダム記事を挿入することができますし、これを応用すれば、スライドショー用のカスタム投稿タイプを作成した後、ランダムに1件ずつ表示することでデータベースと連動したスライドショーを作成することもできるかと思います。
(さらに…)
WordPress:Ajaxでランダムの記事を取得し、切り替えさせる
- 作成日
- 2015/02/03
- 更新日
- 2016年8月16日
カテゴリー「Wordpress」記事一覧ページ。
WordPressにて、ランダムの記事をAjaxを用いて表示する方法をご紹介します。サイドバーに常に入れ替わるランダム記事を挿入することができますし、これを応用すれば、スライドショー用のカスタム投稿タイプを作成した後、ランダムに1件ずつ表示することでデータベースと連動したスライドショーを作成することもできるかと思います。
(さらに…)
iPhoneやアンドロイドなどのスマートフォンが流行り始めてから数年もしない内に、すぐにweb制作においてスマートフォン対応が注目されてきました。ここでいうスマートフォン、いわゆるスマホはiPhoneやアンドロイドなどここ数年で出てきた携帯電話としておきます。フィーチャーフォンと呼ばれるガラケーの対応でも、ウェブ制作者の方々は時と場合によって表示の切り替え方を変えてきたと思います。.htaccessを変更してディレクトリで振り分けるのか、サブドメインなどを取得して個別のサイトを構築するのか。個人的には制作費が許される限り1つのデータベースでそれぞれのサイトを構築し、デバイスによって切り替えるのが理想的だと考えています。しかし、最近のGoogleではどうも1つのHTMLにCSSでの対応させる方法を勧めているようです。そのことをGoogleは色々と理由は述べていますが、私はGoogleが絶対正しいかというとそうではなく、あくまでGoogle検索にとっては都合がいい程度に考えています。はっきり言って日々変わっているGoogleが今後より高性能のアルゴリズムを作ってしまえばそれで終わりだと思うからです。
スマホ対応もフィーチャーフォン対応と同じように、色々な対応の仕方があります。製作費や時間、サーバ環境などはあると思いますが、維持管理や今後のウェブ展開も考え、正統な対応をしていればしばらくは衰えないと思います。
このようなスマホ対応についてのページは沢山あるため、このページでは個人的に思うことを多く書いていこうと思います。主流に乗っかるのではなく新しいデザインや方法を見つけるヒントになれば一番嬉しいですが、どちらかというと意見が欲しかったりします。そのためこうすればいいという記事というより、こう考えているんだけど、程度に見てください。
(さらに…)
WordPressで固定ページの一番上の親を取得したいときがあるかと思います。get_postなどで得られる固定ページの情報には親のIDしかなく、さらにさかのぼった情報はありません。そのため、孫まで行ってしまったときに祖父を言い当てるのには少々工夫が必要です。
(さらに…)
WordPressの検索フォームを設置するためには、決まり事があります。今までは独自に検索フォームを作ってWP_Queryに組み込む方法をしていたのですが、勉強も含めて通常のループで表示できる検索フォームをまとめてみようと思います。
余談ですが、キーワードは1600文字以内と制限されているみたいですね。「Fairly insane upper bound for search string lengths.」と書いてあるように、非常識な文字数ではあります。
(さらに…)
WordPressのテーマやプラグインを作成時、管理画面にメニューまたはページを追加したいときがあると思います。特にプラグインの作成するときは独自の設定画面を作る場合が多いと思いますが、どこのメニューに追加するかサクッとできるように記事にしてみました。
参考元:http://wpdocs.sourceforge.jp/Adding_Administration_Menus
(さらに…)
会社概要やトップページをWordpress、商品販売ページをECCUBEとして利用している方も多くいると思います。しかし困ってくるのがトップページなどに新着情報(WordPressの投稿)と新着商品(ECCUBEの商品)を同時に掲載したい場合。この方法ではWordpress内でECCUBEの商品RSSを取得して表示します。ECCUBEにWordpressの投稿を表示させるプラグインなどはあるようですが、ページを簡単に作れるWordpressの方をメインに使いたい場合などに便利です。また、外部にECCUBEがある場合にもこの方法は利用できるため、ショップ専用のサーバから取得することもできます。
(さらに…)
WordPressのループについてまとめてみました。普段テーマ作成をする度に書くのも面倒くさい時があるので、テンプレートを用意しておくと楽かと思います。
投稿の情報などを表示する際に必要なPHPコードで、Wordpressのテンプレートタグなどを利用します。
管理画面から入力した投稿などの情報をデータベースから引っ張って来るわけですが、接続や取得する条件などをWordpressのテンプレートタグによって行うことにより、簡易化したPHPコードで取得条件の指定や表示ができるようになります。
ループは何をしているかというと、次の記事があるまで記事を取得して処理を繰り返し行います。次の記事がなければループが終わります。このようにして取得→処理の繰り返しを行うのですが、記事ページや最新記事一覧などもループで行う場合がほとんどだと思います。
ループで何を取得するかはパーマリンクと関係があります。パーマリンクによって記事が読み込まれています。そのため、記事ページではその記事をループで処理し、カテゴリーページでは該当カテゴリーの記事を管理画面で設定した表示件数分だけ繰り返し処理します。これはメインループといい、表示されているページによって異なる記事を読み込みます。パーマリンクについてはこちら
(さらに…)
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」でユーザー権限グループを作成し、必要な箇所だけチェックを入れてアップロードします。