管理画面の特定のカスタム投稿の編集画面のみにメッセージを表示

WordPressで特定のカスタム投稿の編集画面のみにメッセージを表示させたい時があります。 例えば、ある特定のカスタム投稿では必ずアイキャッチ画像を入れてほしい。とか、スタッフ専用のカスタム投稿で公開状態を非公開にしてほしい。という時に、そのカスタム投稿の編集画面に、「必ずアイキャッチ画像を入れて下さい」とか「公開状態は非公開にして下さい」といったメッセージをタイトル入力欄の上に表示させたかったりする。

wordpress – How to detect custom post type inside admin_init hook callback?
Stack Overflow
http://stackoverflow.com/questions/11124525/how-to-detect-custom-post-type-inside-admin-init-hook-callback

WordPressでプラグインを使わずに管理(投稿)画面にメッセージを通知
de2p株式会社 http://www.de2p.co.jp/tech/wordpress/admin-notices/

手順

function.phpに以下を記述

ちなみに管理画面のすべてに表示するなら、

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

ページの一部分を特定のIDのユーザーにのみ表示する

ページの一部分を特定のユーザーにのみ表示したいことがあります。
今回はスタッフ専用ページへのリンクをスタッフがログインした時のみ表示させたいという場合。
今回はスタッフ用のユーザーIDが3つしかなく、増えることもないので、そのユーザーIDでログインしているときにのみ表示させます。ユーザーIDがたくさんあったり、増える可能性がある場合は権限で条件分岐を行なうほうが良いでしょう。

参考にしたサイト

WordPress:ユーザー権限や情報によって条件分岐を行う方法
NxWorld
http://www.nxworld.net/wordpress/wp-current-user-can-and-get-currentuserinfo.html

関数リファレンス/get currentuserinfo
WordPress Codex 日本語版
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_currentuserinfo

手順

今回はトップページにスタッフ専用ページへのリンクを表示させるため、home.phpに下記に記述。
Posted in テンプレート作成 | Leave a comment

bodyのclassに、カスタム投稿タイプ、タームを挿入

カスタム投稿タイプやタームごとに、ちょっとしたスタイルの変更をしたい場合など、bodyタグのclassにカスタム投稿タイプやタームを挿入する方法です。
いつも検索で探してしまうので、メモ。

参考にしたサイト

カスタム投稿タイプを挿入
[WordPress] カスタム投稿タイプのタイプ名をbody_class()のclass名に追加する – かちびと.net
http://kachibito.net/wp-code/add-body_class-custom-post-type

タームを挿入
bodyのclassにスラッグを入れる | 長崎/佐世保のホームページ制作会社 クロッキーワークス
http://www.croquis.jp/?p=726

すべてのタームを挿入
関数リファレンス/get the terms – WordPress Codex 日本語版
https://wpdocs.osdn.jp/関数リファレンス/get_the_terms
※「すべてのカスタム分類のタームを取得する」例の部分

WordPress:body_classに独自のクラスを追加する方法+代替で独自のIDやクラスのみをbodyに指定する方法 | NxWorld
http://www.nxworld.net/wordpress/wp-body-class-adding-more-classes-and-alternative-method.html

手順

class名を挿入したbodyタグのあるテンプレート(single.phptoとかindex.phpとかtaxonomy-xx.phpとか、場合によってはheaer.phpかも)のbodyタグ部分に以下、記述します。

function.phpに以下、記述します。

もう一つ。上記のタームのスラッグをclass名として挿入する場合は「example_cat」というタクソノミーのスラッグを指定して、そのタクソノミーに属するタームを取得している。しかし、複数のタクソノミーを使用していてbodyタグの記述のあるテンプレートが共通という場合、すべてのタクソノミーに属するタームを取得してclass名として挿入したい。その場合は、function.phpに以下の通り記述。

関連する記事

bodyタグのclassにページスラッグを追加する。
http://memo-tan.com/wordpress/add-page-slug-in-body-class_20141002.html

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

管理画面をスタイルシートでカスタマイズする

編集者権限のユーザーに対して画像ウィジェットだけ追加できるようにしたかったので、管理画面をカスタマイズしました。

参考にしたサイト

WordPress のよくあるカスタマイズコード functions.php 多め―Web Design RECIPES
http://webdesignrecipes.com/wordpress-customize-with-functions-php/

※「14.9. 管理者以外にアップデートのお知らせ非表示」のfunction.phpの記述で特定の管理者権限の振り分け部分「if (current_user_can('edit_users')) 」を参考にしました。感謝。

[WordPress] 管理画面に独自の CSS・JavaScript を適用させる方法まとめ | memocarilog
http://memocarilog.info/wordpress/7570

※CSSコードの書き込みを参考にしました。感謝。

また、今回は使えませんでしたが、権限ごとに機能を追加、削除する方法も良いと思います。
その場合、以下の記事が参考にできると思います。
機会があれば、試してみたいです。

WordPress:ユーザー権限毎の機能を任意でカスタマイズする方法 | NxWorld
http://www.nxworld.net/wordpress/wp-customize-user-role.html

使用したプラグイン

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

ユーザーごとに権限を細かく調整できるプラグインです。
使い方は以下の記事が分かりやすいです。
User Role Editor – WordPressのユーザー権限をカスタマイズできるプラグイン – ネタワン
http://netaone.com/wp/user-role-editor/

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

管理画面のサイドメニューに表示する項目を変更できるプラグインです。
有料版の「Admin Menu Editor Pro」(有料)でメニューの表示に細かく権限指定ができるようですが、今回は「画像ウィジェット編集」だけって希望なので、そこまでは対応できそうにないかなと思い、スタイルシートを使う方法で対応。

手順

  1. プラグイン「User Role Editor 」で編集者権限のユーザーに「edit_theme_options」の権限を与えておく。

  2. プラグイン「Admin Menu Editor」で「画像ウィジェット編集」としてメニューを追加して、このメニューから編集してもらえるようにする。
    「Targetpage」は「<Custom>」にして、「外観/ウィジェット」編集画面のURL(例:http://example.com/wp-admin/widgets.php)を指定しておく。
  3. このままでは、「外観」のウィジェット以外も編集できてしまうので、管理画面の「外観」メニューをスタイルシートで非表示にする。また、「画像ウィジェット編集」画面の画像ウィジェット以外のウィジェットも非表示にするため、以下のコードをfunction.phpに記述。
Posted in 管理画面カスタマイズ | Leave a comment

Contact Form 7でテキスト入力中にEnterキーを押すと送信しようとするのを防ぐ

Contact Form 7で作ったフォームのテキスト入力欄にテキストを入力している時に、変換の確定のつもりでEnterキーを押すとsubmitされるのを防ぎます。
半角英数で変換しない場合でも、癖でEnterキーを押す方が結構いらっしゃいます。

こちらを参考にさせていただきました。感謝。

HTML – テキストフィールドがEnterキーでサブミットされるのを防ぐ – Qiita
http://qiita.com/awakia/items/17457d6b1809dd803413

手順

1.javascriptのファイルを作る。

2.header.phpに1のjsファイルを読み込むように記述。条件分岐でContact Form7を使用するページだけにするとよいでしょう。

 

Posted in プラグイン, 使ってみたプラグイン | Leave a comment

Contact Form7の確認用アドレスの整合性チェック

Contact Form7 ver.7 4.1.1で機能しなくなったので、修正したメモ。

Qiitaのこちらの記事のおかげで大変助かりました。keisukemizuno@githubさんに感謝です。

WordPress – [Contact Form 7 4.1] 確認用メールアドレスのエラーチェック(最新版対応) – Qiita
http://qiita.com/keisukemizuno@github/items/6816ed6f7d5e474a324e

手順

1.function.phpに以下記述

2.ContactFormの設定

Posted in プラグイン, 使ってみたプラグイン | Leave a comment

WordPressをMacで編集できないと言われた時の対処方法-プロキシサーバーの設定

お客さまから、Macで編集できなくなったとのご連絡。

  • 社内ネットワークを使用。
  • Windowsでは正常に編集できる。
  • Macでは管理画面は開くけれど、各ページの編集画面で入力欄がぐるぐるしている。
  • Safariは社内ネットワークの都合上バージョンアップできない
  • 最新版のFirefoxをインストールしたがやはり編集できない。
  • こちらのMacでは問題なし。

かなり悩んだのだけれど、Firefoxで最初ネットに接続できず、設定が必要だったというので、どんな設定をしたのかを伺ったところ、プロキシサーバーを介してのアクセスの設定だった。
参照:Firefox の接続設定

なるほど。Wordpressでもプロキシサーバーを介してのアクセスについても、設定が必要だというわけね。
しかし、つい3日前までは編集できていたとのこと。お客さま側で何か社内ネットワークの変更があったのかな?

手順

1.wp-config.phpの「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」より上に以下記述。

2.wp-includes/class-snoopy.phpを変更。(アップデート時、注意。)

Posted in 全般 | Leave a comment

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