サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
yahss.net
今回の投稿は、松戸WordPress部の勉強会「カスタム三兄弟(応用編)画像ギャラリーを作ってみよう」のフォローアップです。 レベル:初級から中級者になりたい人向け WordPressのメディア挿入のギャラリーを使えば、とっても簡単にギャラリーを投稿記事に掲載することができます。 でも、関連付けられた画像を思い通りに取得できるようになれば、自由にレイアウトしたり、Ajaxを利用してステキなギャラリーを設置できるようになります。今回はその第一歩です。 アジェンダ 題材と環境 カスタム投稿タイプ設置 画像登録用のカスタムフィールドを設置(ループ) フロントエンドに表示する 自由自在にギャラリーを設置する 題材と環境 今回の題材の設定: 各地のシェアオフィスを紹介するカスタム投稿タイプを設置して、カスタムフィールドに登録された写真のギャラリーを詳細ページに設置する というものです。 チュートリア
カスタムフィールドを設置するために、これまでは好んでスクラッチしていたのですが、最近は便利なWordPressプラグイン Advanced Custom Fields (以下ACF)を積極的に使うようにしています。やっぱり楽ですからね。 ACFでフィールドタイプを、チェックボックス(checkbox)、プルダウン(select)、ラジオボタン(radio)にすると、選択肢(choices)を設定することになります。この選択肢(choices)をループ外で全部取得する方法です。 ACFには get_field_object() や get_field_objects() というファンクションが準備されています。細かな説明は割愛しますが、投稿と関連付けてなら選択肢を取得することが可能です。今回はループ外で選択肢を取得する方法です。 以下の例では、選択肢だけではなく、フィールドのすべての要素を配
Theme My Login カスタムメールの設定 会員制サイトを、WordpressプラグインTheme My Login で制作するシリーズです。 過去記事は: Theme My Login 登録フォーム(準備編) Theme My Login 登録フォーム(実装編) … 続きを読む
WordPressでカレンダーを表示するプラグインはたくさんありますが、なかなか希望する仕様のものがないことってありませんか?そのような場合は、カレンダーを自作してしまいましょう。 公開した後にありがたい次のようなコメントをいただきました。 WordPressで date関数を使うと時差分ずれるので、date_i18n関数を使った方がよいです。 エスケープ処理はしっかりと 毎回APIのリクエストするのは遅延に繋がります。Transients APIの利用を検討ください。 file_get_contents で祝日を取得していますが、WordPress であれば、wp_remote_getを使った方が、タイムアウトなどの設定もできてお得です。 投稿の関連付けの部分で、一カ月の日数分get_posts によるクエリーが発生してしまっています。カレンダーを表示するだけなら、月間のイベントを一気に
サブタイトル1:カスタムフィールドの表示/非表示の制御 目的はこっちなのですが、この方法を説明しているわけではありません。 サブタイトル2:タクソノミ選択をラジオボタンに これはおまけですが、そうしたいケースも多いかも。 WordPressの投稿時にタクソノミ(もしくはカテゴリ)の選択をカスタムフィールドの値とシンクロ(同期)させたいことってないですか? 次のようなケースです 例えば、「売買物件」と「賃貸物件」とがあって、その選択により項目を切り替えたい場合。 タクソノミによって表示されるカスタムフィールド項目を切り替えたい カスタムフィールドの実装にWordPressプラグイン Advanced Custom Fields(ACF) を使用 ACFの「条件判定」の基準をタクソノミにしたい カスタムフィールド表示/非表示を切り替える上での問題点 ACFの「条件判定」とは、他のカスタムフィー
今回はレアな情報ではありませんが、お問い合わせフォームなどで郵便番号を入力すると住所を自動入力してくれるjavascriptです。 Javascript スクリプトの実行にはjQueryが必要です。 <script type="text/javascript"> jQuery(function($){ // 郵便番号入力による住所自動入力 $('#zipcode').change(function(){ var zip = $(this).val(); var url = 'http://api.zipaddress.net?callback=?'; var query = {'zipcode': zip}; $.getJSON(url, query, function(json){ /* json.pref 都道府県の取得 * json.address 市区町村の取得 * json.fu
「Theme My Login 登録フォーム(準備編)」のページのフォームからご質問をいただきましたので記事にしました。 ご質問内容は 新規ユーザー登録時に追加した項目で「ブログ上の表示名」も自動的に設定してしまいたい というものでした。 何度かのやり取りで最終的に次のように提案させていただきました。 既存の$userdataのlast_name、つまりプロフィールページにはあるが通常の登録項目にはないフィールド「姓(last_name)」を登録時に追加 追加項目の保存ロジックをfunctions.phpに記述し その保存と同時にその値でdisplay_nameを設定 ご質問はWordPressプラグインTheme My Loginの登録を拡張する趣旨でしたが、ここではプラグインを使わない登録の拡張方法を示します。ついでにバリデーションも含めてfunctions.phpに記述するコードは:
カスタムフィールドの値がどのように格納されているかを理解するといろいろなことができるようになります。(知ってる人は知ってるんですけどね。) この記事のコンテンツ: カスタムフィールドの値を見てみよう カスタムフィールドの値(meta_value)を取得する チェックボックスは配列になる 配列が格納されたカスタムフィールドで絞り込み(meta_query) カスタムフィールドの値を見てみよう ほとんどの方は、WordPressでカスタムフィールドの実装はプラグインを使っているのではないでしょうか。 有名どころとしては、Advanced Custom Fields、Custom Field Templateでしょうか。 ちなみにわたしは、ほとんどはスクラッチで、ループ(画像を任意に複数設けるなど)だけ、その機能をフリーで提供しているCustom Field Suiteを使っています。 どのよう
以前の記事「カスタム投稿タイプとカスタムフィールドでカスタマイズ」では、独立した投稿を定義してカスタムフィールドを実装する方法については詳細を説明しました。 今回は次の点を記事にしました。(日本語の記事を見出せませんでしたので) まずは基本 親メニュー名と異なる子メニュー名で表示 複数のカスタム投稿タイプを同一親メニュー内に配置 まずは基本 レシピをカスタム投稿タイプで掲載していきたい!という設定です。 階層型タクソノミ(カテゴリ)は「主食」「おかず」「副菜」「デザート」などレシピ分類に。非階層型タクソノミ(タグ)は「じゃがいも」「豚肉」「アジ」などの食材分類に活用するというような。 実装例 Codexに掲載されている例を、今回の設定に合わせて日本語化すると以下のようになります。 functions.phpに追加します。 add_action('init', 'my_recipe_init
時代はレスポンシブWEBデザイン(コンテンツは一つでデバイス幅によってレイアウトを変える)ですが、今あえて、コンテンツをPC用とスマホ用と二つ設けて、自動的に切り替えたい(リダイレクト)という要望も根強くあります。 しかも、スマホサイトには[PCサイトを見る]というボタンが付いており、スマホサイトに自動的にリダイレクトさせるという機能と矛盾する拡張機能がついているという場合です。 リダイレクトサンプル デモを設けましたので、とりあえずPCとスマホのそれぞれからクリックしてみてください。 デバイス切り替えサイトのデモ PC用URL(http://yahss.net/demo/useragent/pc) 括弧内URL名から分かるとおり、PCサイトへのリンクです。 リンクをクリックするとPCはこのままPCサイトへ、しかしスマホならスマホサイトにリダイレクトします。 しかし、逆にスマホ用URLの場
Tweet Tweetメディアを挿入/編集 でアップロードした画像(メディア)のために、 「タイトル」「キャプション」「代替テキスト」「説明」などの フィールドがありますが、この メディアを挿入/編集 にカスタムフィールドを追加する方法をご紹介します。 例えば、ギャラリーサイトを制作する場合に、写真画像ごとに撮影場所、クレジットやクレジットURLを表示したいような場合です。 [メディアを挿入/編集]にカスタムフィールドを追加 メディアのフィールド配列をフックする attachment_fields_to_edit というフィルターフックを活用します。 詳しくはcodex(英語)をご参照いただきたいと思いますが、 functions.phpに次のように記述します。 /*********************************************** * [メディアを挿入/編集]に
Tweet Tweet「メディアを挿入」画面の表示を「この投稿へのアップロード」のみにする方法の紹介です。 投稿画面の[メディアを追加]をクリックすると「メディアを挿入」画面がポップアップしますが、 「すべてのメディア」になっており、サイトにアップされたすべてのメディアを表示されるのが、 WordPressの仕様です。 現在編集中の投稿に関連付けられたメディアのみを見たい(見せたい)場合、 「すべてのメディア」が表示されていると混乱を招くことがあります。 それで、この表示を「この投稿へのアップロード」のみにしたいことはないでしょうか。 投稿画面のフックを利用してJqueryで制御 プルダウンリスト(attachment-filters)を表示するためのWordpressフックはないので、 投稿画面をフックして、投稿画面のフッターにJqueryのコードを記述して対処します。 function
Tweet Tweet会員制サイトを、WordpressプラグインTheme My Login で制作するシリーズです。 過去記事は: Theme My Login 登録フォーム(準備編) Theme My Login 登録フォーム(実装編) Theme My Login 登録フォーム(おまけ) 今回は新規登録時の通知メールのカスタマイズです。 カスタマイズしないとちょっと ‘かっこ悪い’ 登録したユーザーと、管理者あてに、WordPressは通知メールを送信します。 新規ユーザーに送られるメールの内容は: 送信者:WordPress<WordPress@ドメイン> 件名:[サイト名]あなたのユーザー名とパスワード 内容:ユーザー名、パスワード、ログインURL このようにちょっとかっこ悪いメールが送信されます。管理者あての通知も似たようなものです。 通知メールをカスタマイズしてちょっと ‘
Tweet TweetTheme My Login 登録フォーム(準備編) Theme My Login 登録フォーム(実装編) WordpressプラグインTheme My Login を活用して新規ユーザー登録の機能をサイトに搭載してきました。「登録フォーム」という枠組みでは、今回がシリーズ最後となりちょっとおまけ的な要素の紹介です。 実装の前に:(過去記事) ユーザー登録できるようにする 実装準備編:(過去記事) ユーザープロフィール項目の削除と追加 追加したユーザープロフィール項目を登録時に保存する ユーザー登録時のエラーメッセージの制御(必須項目の指定) ユーザー登録フォーム実装編:(過去記事) Theme My Login の設定 テンプレートファイル(register-form.php)をテーマフォルダにコピー 追加したユーザープロフィール項目の実装(text、select、
Tweet Tweet会員制サイトを制作には、WordpressプラグインTheme My Loginは欠かせません。 登録フォームの実装手順を記録しておきます。 実装の前に: ユーザー登録できるようにする 実装準備編: ユーザープロフィール項目の削除と追加 追加したユーザープロフィール項目を登録時に保存する ユーザー登録時のエラーメッセージの制御(必須項目の指定) ↓↓↓ この記事ではここから ↓↓↓ ユーザー登録フォーム実装編: Theme My Login の設定 テンプレートファイル(register-form.php)をテーマフォルダにコピー 追加したユーザープロフィール項目の実装(text、select、checkbox、radio、textareaに対応) ユーザー登録時のエラーメッセージの制御(翻訳不可文字列の対応) ↑↑↑ この記事ではここまで ↑↑↑ シュールなご要望に
Tweet Tweet会員制サイトを制作には、WordpressプラグインTheme My Loginは欠かせません。 登録フォームの実装手順を記録しておきます。 実装の前に: ユーザー登録できるようにする 実装準備編: ユーザープロフィール項目の削除と追加 追加したユーザープロフィール項目を登録時に保存する ユーザー登録時のエラーメッセージの制御(必須項目の指定) ↑↑↑ この記事ではここまで ↑↑↑ ユーザー登録フォーム実装編: Theme My Login の設定 テンプレートファイル(register-form.php)をテーマフォルダにコピー 追加したユーザープロフィール項目の実装(text、select、checkbox、radio、textareaに対応) ユーザー登録時のエラーメッセージの制御(翻訳不可文字列の対応) シュールなご要望に対応(おまけ): メールアドレスでログ
Tweet TweetWordPressを会員制にしている場合、ユーザー登録完了後に自動的にログインさせてしまいたいことがあります。 Wordpressプラグイン Theme My Login を使用していることが前提ですが、登録後に自動ログインする方法をご紹介いたします。 承認の過程を経ないで会員ページ等を参照できてしまいますので、あまりお勧めしません。フローを慎重にご検討の上、実装するようになさってください。 実装方法 概要としては: プラグインのフックを記述したファイルを作成して、所定の場所にアップする。 それだけです。 theme-my-login-custom.phpというファイルを準備する まず “theme-my-login-custom.php” というファイルを新規作成してください。(適当な他のphpをコピペして作成するのが簡単ですね。)これは、プラグイン Theme M
Tweet TweetWordPressプラグイン、Theme My Login 6.3.8 に対応した日本語ファイルをアップしました。どうぞご活用ください。 日本語ファイルのダウンロード theme-my-login-jp-6.3.8 日本語ファイルの実装方法 上記リンクをクリックしてzipファイルを保存 theme-my-login-jp-6.3.8.zip を解凍 (”theme-my-login” のフォルダ構造になっています) plugin/theme-my-login/language に theme-my-login-ja.mo をコピー zipファイルには、theme-my-login-ja.po も同梱されています。 必要なら翻訳を調整してください。 ローカライズの不具合 ローカライズ(日本語の場合は日本語化)するにあたって、Theme My Login の側にどうもいく
Tweet Tweetお客様にWordpressを納品する場合、物件登録や施工例などのように特定の投稿に特化した 専用の投稿画面 が必要になることがほとんどです。最近実装する機会がありましたので参考に。必要に応じて追加削除してください。 実現するために必要な要素は: カスタム投稿タイプで投稿画面を独立させる カスタムフィールドで入力支援 投稿画面をCSSで体裁もカスタマイズ RSS発信に追加 プラグイン化する?(おまけ) カスタム投稿タイプで投稿画面を独立させる カスタム投稿タイプを定義する関数は、register_post_type です。 以下の例は codex のサンプルをベースにラベル類を「物件」に置き換えた例です。 functions.phpに記述します。 add_action('init', 'my_estate_init'); function my_estate_init(
Tweet Tweetカスタムフィールドの値(meta_value)で記事を並べ替える方法です。 活用例としては、 カスタムフィールドに記録された商品価格を基準に、安い順 / 高い順 で表示したいような場合です。 方法としては2つ query_postsに渡す配列でorderby=meta_valueを指定する方法 sql文を使って直接データベースを解析する方法(これは別記事にて) 今回は、meta_valueを直接参照して並べ替えるだけなので、query_postsでよさそうです。 <?php $args['category_name'] = 'カテゴリスラグ'; //カテゴリスラグによる絞り込み $args['orderby'] = meta_value; //メタ(カスタムフィールドの値)でソートすることを宣言 $args['meta_key'] = 'キー名'; //どのキーの値を
Tweet Tweet管理画面のユーザー一覧に、登録されているフィールドを一覧表示させたい場合はfunctions.phpに記述! 次の例は、カスタマイズして追加した「住所1(addr1)」と「住所2(addr2)」というフィールドを一覧に表示させる方法 /***************************************************** ユーザー一覧に表示フィールドを追加する *****************************************************/ add_action('manage_users_columns','manage_users_columns'); add_action('manage_users_custom_column','custom_manage_users_custom_column',10,3);
メンバーサイトを作る上でとても便利なのがTheme My Login Theme My Loginでできることとは: ユーザー登録ページ、ログインページ、パスワードを忘れた場合のページをサイト内に設置可 カスタマイズしたログインフォームを、ウィジェットを使ってサイト内の望む場所に設置 ユーザー権限ごとに、ログイン/ログアウト時のリダイレクト設定 gravatarの利用 ログイン時のユーザーリンクメニューを自由に設定(ダッシュボード、プロフィールなど) ユーザー登録時やパスワードのリカバリー時のメールのカスタマイズ(HTMLフォーマット可) ユーザー登録時に、ユーザーがログインパスワードを自由に設定できる ユーザー登録を承認制も可 サイト内にプロフィール編集ページを設けることができる 登録メールアドレスでもログイン可 ログインフォームをphp内に記述するには echo do_shortcod
メンバーサイトを構築する際に、ユーザープロフィールの編集画面はほとんど場合必須。そこで実現したいのは: プロフィールの表示項目の削除と追加(functions.php) プロフィールの編集は管理画面ではなくサイト内で(Theme My Login) プロフィールの編集でラジオボタンやチェックボックスなどを自由に使いたい(Theme My Loginとphp) 実現するプラグインはTheme My Login プラグインの設定画面で “Themed Profiles を有効にする” をチェックすれば、プロフィールページをサイト内に表示できる。 でも不要な項目があったり、項目を追加したい場合は、そのためのプラグインもあるが、functions.phpへの記述と、Theme My Loginのプロフィールページのテンプレートを使って結構自由にカスタマイズできる。 プロフィールページの上部にある
Tweet Tweetカテゴリページ(カテゴリアーカイブ)で表示する投稿件数を指定する方法は二つ。 管理画面で設定する方法(スタンダード) query_postsを使用する方法(基本設定の表示件数と異なる場合) 管理画面で設定する方法(スタンダード) [管理画面]/[設定]/[表示設定]の「1ページに表示する最大投稿数」で指定する query_postsを使用する方法(基本設定の表示件数と異なる場合) 上記の管理画面の基本設定とは違う件数を表示させたい場合、現在のクエリ($query_string)に、表示件数を改めて付加すればよい。 <?php while ( have_posts() ) : the_post(); ?> この記述、つまり記事ループが始まる前に、以下のように記述する <?php global $query_string; //変更前のクエリを取得し、以下の件数とページを
Tweet Tweet新規投稿の新着情報を日付と見出しリンクのリストをトップページなどに表示することがあるが、たまに、年末年始や休業日のお知らせを掲載したい場合に。(書き留めるほどでもないですけど) ・投稿の新着情報は日付とタイトル ・カテゴリで「お知らせ」 で投稿された記事は全文を掲載 <?php $args = array( // 'cat => array( 21, 24 ),//複数の特定のカテゴリのみ表示したい場合 'category__not_in' => array( 46 ),//除外したいカテゴリがある場合 'posts_per_page' => 10//リストしたい投稿数 ); $newpost = get_posts($args); if ( count($newpost) > 0 ): ?> <dl> <?php foreach($newpost as $post)
Tweet Tweet外部ブログのRSSフィードを表示するために fetch_rss() fetch_feed() という関数がちゃんと準備されています。 トップページやサイドバーに表示して、外部ブログとの連携を取ることができます。 <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed('http://example.com/rss/feed/goes/here');// 配列にすれば、複数のRSSフィードを同時に取得することも可能 if (!is_wp_error( $rss ) ) : $maxitems = $rss->get_item_quantity(5); // カッコ内は取得する件数 $rss_items = $rss->get_items(0, $maxitems); endif; ?> <
Tweet Tweetビジュアルエディタに入力したテキストや画像はRSSフィード(feed)で発信できる。しかしながら、カスタムフィールドの値や、ギャラリー機能を使用するために登録した添付画像(アタッチメント)はフィードには含まれない。デフォルトでは。 カスタムフィールドの値や添付(アタッチメント)をフィードに含めるには: the_excerpt_rss と the_content_feed をフックして”追加したい内容”を$contentに追加してはきだせばよい。 functions.phpに次のように記述 function my_feeds($content) { global $post; $content = $content. "追加したい内容を記述"; // return $content; } add_filter('the_excerpt_rss', 'my_feeds')
このウェブスペースへは、まだホームページがアップロードされていません。 早速、エックスサーバー上へファイルをアップロードしてみましょう。 アップロードの方法などは、サポートマニュアルをご参照ください。
Tweet Tweetカスタムフィールドの値(meta)での絞り込み検索の需要はけっこうあるのではないでしょうか。 例えば次のような場合です 物件情報(カテゴリ) 土地(子カテゴリ) 新宿区(子カテゴリ?) 江東区(子カテゴリ?) 中央区(子カテゴリ?) 建売(子カテゴリ) 新宿区(子カテゴリ?) 江東区(子カテゴリ?) 中央区(子カテゴリ?) このようなカテゴリ構造で、子カテゴリに地域名をそれぞれ複数設けたい場合、地域名をそれぞれの子カテゴリごとに、さらに子カテゴリとするなら、重複した名前のカテゴリを設けることになります。これではどうもすっきりしません。 このような場合、地域名を子カテゴリ扱いではなく、カスタムフィールドの値にしてしまえば、すっきりします。 商品紹介サイトなどでも活用できます。(商品分類をカテゴリに、色やサイズ等をカスタムフィールドに) カスタムフィールドをチェックボック
次のページ
このページを最初にブックマークしてみませんか?
『エックスサーバー サーバー初期ページ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く