Contact Form 7で郵便番号→住所入力

ほぼ必須なこの機能。仕事ではContact Form 7を使わないことが多く、たまに使うとやり方忘れちゃうのでメモ。

やりたいこと

  • 郵便番号を入力したら、自動で住所の都道府県、市区町村が入力された状態になる。
  • 郵便番号は1個の入力欄(テキスト:半角英数)
    ※ハイフンはあってもなくても自動入力される
  • 住所入力欄は3つに分ける。
    都道府県:プルダウンで選択、市区町村:テキスト、その他:テキスト

手順

header.phpに以下のコードを入れる。

Contact Form 7のフォーム設定
大切なのは、郵便番号の入力欄に「id:zip」を設定すること。

後はフォームを設置する。

Posted in テンプレート作成, プラグイン, 使ってみたプラグイン | 2 Comments

下書きページも閲覧だけできる権限グループを作る―User Role EditorとAdmin Menu Editor

以前、「投稿の承認用のユーザーを作成する」という記事では非公開記事をログインして確認するというフローにしましたが、クライアントワークで、下書き保存した記事を確認したいという要望があったので、やってみました。

条件

  • 弊社が制作とシステム運用を担当。
  • クライアントのA社では編集者権限の担当者が記事の投稿を担当。
  • A社の編集担当者は作成した記事に対して社内の色々な人に承認を得る必要がある。
  • 承認者には、非公開の記事と下書きの記事を公開前に見せたいが、編集はできないようにしたい。

使用したプラグイン

User Role Editor
https://wordpress.org/plugins/user-role-editor/

 ユーザーごとに権限を細かく調整できるプラグインです。

手順

  1.  User Role Editorで購読者権限で社内閲覧用の権限グループを作成(Add User Role)します。今回は承認者の権限グループを「authorizer」としました。
  2.  User Role Editorで作成した権限グループ(Use Role)の権限を調整します。「read」のみチェックがついているのですが、「read_private_pages」「read_private_posts」「edit_others_pages」「edit_others_posts」もチェックします。
  3. 「Show deprecated capabilities」にチェックして、「level_0」と「level_1」にもチェックします。(これは必要ないかもしれない。)
  4. 社内閲覧用のユーザーの権限グループを社内閲覧用の権限グループに指定します。
  5. function.phpに以下のコードを書いて、管理バーの「ページを編集」と「+新規」のリンクを非表示にします。
    ついでに管理者権限以外は管理バーのコメントと更新も非表示にするようにしました。

ログインしたら、管理画面を見せずに、トップページなどにリダイレクトして、管理バーも非表示にしてしまうのも社外に承認者がいる場合は良さそうです。
その場合は、一定期間をすぎるとログアウトするようにした方が良さそうです。

参考にしたサイトなど

他に、管理者権限ごとに管理画面をカスタマイズする時には、管理画面のメニューを「Admin Menu Editor」を使って、調整しています。

Admin Menu Editor
https://wordpress.org/plugins/admin-menu-editor/

管理画面のメニューの表示をカスタマイズできるプラグインです。

Posted in 管理画面カスタマイズ | Leave a comment

foreachで記事を取得している時に、記事がなかった場合の処理も指定したい

foreachのループ処理で記事の一覧とか取得している時に、記事がなかった場合の処理を追加したい。
そんな時は、if( !empty( $myposts ) ) :(記事がからじゃなかったら)とif( empty( $myposts ) ) :(記事が空だったら)で分岐させる。

↓例えばこんな感じ。

「空飛ぶたね」 http://flying-seed.com/

マルチサイトで作成したサイトの新着記事を表示しているが、記事がないサイトの場合は「旅に出る準備中です」と表示するようにしている。(何年準備しているんだか・・・)

参考:foreachの処理を解説してくれています。
WordPressの記事取得で良く見るforeach(ループ処理)について解説 – ht79.info

Posted in テンプレート作成 | Leave a comment

管理画面に更新マニュアルのダウンロードページを作成

管理画面の左メニューに「マニュアルDL」というメニューを作成。
クリックするとマニュアルのダウンロードページが表示されます。

参考:WordPressの管理画面メニューに新しいオリジナルページを作成する方法 | WEB備忘箱

1.function.phpにコードを追加

2.ダウンロード用のページを「wp-manual.php」として作成し、テーマフォルダにアップロード

Posted in 管理画面カスタマイズ | Leave a comment

WordPressのサイトをまるごと複製コピーする

 Wordpressサイトを制作した時に、同じサーバー内にテスト用にもう一つ複製を設置することがあります。
運用していく中でテーマをいじる改変を行なう時に便利だったり、リテラシーの低いクライアントさんの練習用とか。(サーバーの容量には注意)
DuplicatorというプラグインがWordPressのデータを丸ごと複製できてとても便利なのですが、php のバージョンが5.3以上でないといけません。あるクライアントのサーバーでは、残念ながらphp5.3以下だったので、Duplicatorは使えませんでした。

ということで、ファイルとphpMyadminを頼りに複製したのでメモです。
データベースを直接扱うので、初心者の方には向きません。自己責任でやれる方のみ参考にして下さい。

手順

http://example.com/xx/に設置したWordpressをhttp://example.com/xx_test/に複製する。

1.バックアップを作成

  1. ファイルのバックアップ:Wordpressを設置したフォルダを丸ごとダウンロード。
  2. データのバックアップ:phpMyadminでデータベースをまるごとエクスポート。

2.複製用のデータベースを作成。

  1. データベースの作成は利用しているサーバーのマニュアルで確認。
  2. 複製用のデータベースを新たに作成。

3.config.phpを書き換えてファイルを複製用のディレクトリに全部アップロード

  1. ファイルのバックアップでダウンロードしたフォルダの中のconfig.phpのデータベース名、ユーザー名、パスワードを変更。
  2. すべてのファイルをアップロード。
  3. 各ファイルやフォルダのパーミッションが最適なものになっているかどうか確認。

4.データベースのURLを書き換え

  1. phpMyadminで複製用のデータベースを選択。左側のテーブルの一覧から「wp_options」を選択。
  2. 「表示」タブをクリック。
  3. 「option_name」の列が「siteurl」になっている行の編集ボタンをクリックして、「option_value」の値を変更。
  1. 他にもURLが値として入っていたので、結局一括変換した。
  2. ルートからのパスが入っている場合もある。

5.管理画面にアクセスしてみる

  1. 管理画面にアクセスしてログイン。
  2. 「設定」>「一般」で一般設定画面の設定を確認。
  3. 「サイト名」をテスト用と分かるサイト名に変更。
  4. 「WordPress アドレス (URL)」は4のデータベースのURL書き換えで変更されているはず。
  5. 「サイトアドレス (URL)」もテスト用のURLに変更する。
  6. 「表示設定」で「検索エンジンがサイトをインデックスしないようにする」にチェックを入れて、検索ロボットをブロックする。

6.その他プラグインの設定でURLを入れてるところがあったら変更。

  1. クライアント用に左メニューを「Menu Editor」というプラグインで書き換えていたので、設定を変更。

7.投稿の中に入っているURLを変更する

  1. 左側のテーブルの一覧で「wp_posts」を選択。右側上部のデータベース名がテスト用のデータベース名になっていることとテーブル名がwp_postsになっていることを再確認。
  2. 「エクスポート」タブをクリックして、SQLをファイルに保存で、「wp_posts.sql」というファイルがダウンロードできます。バックアップとして保存しておきます。
  3. 「SQL」タブをクリックして、以下のSQL文を入力して実行。

    guidというフィールドにもパーマリンクや画像へのパスとしてURLが入っている。

8.カスタムフィールドの値に入っているURLも変更する

カスタムフィールドの値にリンクが入っている箇所があって変更できていなかったので、変更しました。カスタムフィールドの値がどのテーブルに入っているかはWordPressのデータベース構造を確認したところ、「wp_postmeta」というテーブルの「meta_value」というフィールドに入っています。

  1. 左側のテーブルの一覧で「wp_postmeta」を選択。右側上部のデータベース名とテーブル名を再確認。
  2. 「エクスポート」タブをクリックして、SQLをファイルに保存で、バックアップ用にエクスポート。
  3. 「SQL」タブをくりっくして、以下のSQL文を入力して実行。

    他にもプラグインが作成したテーブルなど、データベースに変換できてないところがないか確認するには、データベースを選択して、「検索」タぶをクリック。検索する単語や値に「/xx/」。検索条件は「正規表現」。テーブルを全選択で実行すると、「/xx/」が含まれているテーブルが分かるので、それぞれのテーブルを確認して、一括変換しておく。

ちょっと厄介だったのは、http://example.com/xx/にWordpressを設置していて、サイトURLをhttp://example.com/に設定し、カスタム投稿のURLがhttp://example.com/カスタム投稿スラッグ/になっていたり、固定ページなんかもhttp://example.com/zzzとかになっていたので、その部分の置換。

参考サイト:

以下、2つのサイトに大変お世話になりました。

WordPressサイトの複製を作る | Tips2ややめんどう | ビジネスサイト制作 世田谷教室 ワードプレスでホームページ作成

[WordPress] 投稿記事内の文字列をSQL文で一括置換 | しゃけろぐ

 

おまけの関連英単語

duplicate:重複する。複製する。繰り返す。

You can make a duplicate copy of WordPress site.

Create a duplicate of a specific full backup.

Posted in 全般 | Leave a comment

bodyタグのclassにページスラッグを追加する。

bodyタグのclassにページスラッグを追加する。
通常<body <?php body_class(); ?>>で色々なclassが追加されるのだけれど、cssでページごとのデザインを設定するときにはページスラッグがclassになっているととても助かる。

こちらの記事を参考にしました。
WordPressの body_class()にページスラッグの決定版 | terabenote.net
http://terabenote.net/archives/2079/

Posted in テンプレート作成 | Leave a comment

設定用固定ページからAdvanced Custom Fieldsの値を取得する

例えば、トップページやアーカイブページ用の設定を固定ページで作成し、その固定ページの編集画面のAdvanced Custom Fieldsで設定した値を取得する場合。

  1. 設定用の固定ページを作成し、Advanced Custom Fieldsでカスタムフィールドを設定する。(公開状態は非公開に)
  2. テーマの中で設定したカスタムフィールドの値を取得する場合は「get_field(‘フィールド名’,ページID)」で取得する。

例えば、固定ページで「メイン画像設定」というページ(ID=41、非公開)を作成。
Advanced Custom Fieldsで「mainimage」という画像アップロードのカスタムフィールドを作成。
index.phpにフルサイズで画像を表示したい場合は、index.phpの記述は以下のようになります。

同じ設定ページでリンクのリストをRepeatで設定した場合。
Repeatフィールド名「top_links」、SubFieldで、「top_link_name」(サイト名称、テキスト※フォーマットはNoFormatting)と「top_link_url」(サイトURL、テキスト※フォーマットはNoFormatting)を設定。

太陽ブログさんの以下の記事を参考にさせていただきました。

Advanced Custom Fields でスライドの設定ページを作る
WordPressでホームページ制作 太陽ブログ 

Posted in テンプレート作成, プラグイン, 使ってみたプラグイン | Tagged | Leave a comment

Advanced Custom FieldsのRepeaterの2件ごとにdivで囲う

Advanced Custom FieldsのRepeaterで設定した項目を出力するのだが、Repeaterで設定したサブフィールドの1セットをclass名boxというdivで囲み、さらにboxというdiv2個ごとにclass名rowというdivで囲う。

参照:
WordPress › フォーラム » 記事を決められた数毎にタグ(div等)で囲みたい
http://ja.forums.wordpress.org/topic/1101
5年前のフォーラム。今ではもっと違う書き方があるかもしれないけど。

プラグイン:
ACF { Repeater
http://www.advancedcustomfields.com/resources/field-types/repeater/

 

shingle.phpに記述

出力結果

Posted in 未分類 | 1 Comment

Advanced Custom Fieldsの画像を出力する

Advanced Custom Fieldsで作成したカスタムフィールドで、種類を「画像」にした時の画像の出力。フォーマットを画像IDにしてアップロード時に設定したaltなどを取得します。

私の場合、お客さまのスキルやaltの設定を忘れてしまいそうな時などには、画像のアップロード用のカスタムフィールドとalt用のカスタムフィールドを分けることもあります。
その場合は、画像のカスタムフィールドの出力形式は画像のURLとかにします。

Posted in テンプレート作成, プラグイン, 使ってみたプラグイン | Leave a comment

カスタム投稿のsingle.phpで、タクソノミーで条件分岐する

カスタム投稿の個別ページで条件分岐するには、single-(カスタム投稿名).phpで以下のように条件分岐させます。

こちらのサイトを参考にさせていただきました。
wordpress カスタム投稿のターム別(記事毎)にテンプレートの表示方法を変える | 
WEBデザイナーのしおり
http://msweb.moo.jp/wordpress/977/

 

Posted in テンプレート作成 | Leave a comment