別のドメインで作成したWordPressのサイトのRSSフィードを読み込む

WordPressのサイトに別ドメインのWordpressのRSS情報を読み込んでいるサイトで画像が読み込めていないので修正できますか?という案件。プラグインがすごく古いやつで、非推奨のfetch_rss()が使ってあったのが原因らしい。

新しいRSSの読み込みプラグインを探してみたけれど、表示方法をカスタマイズするのが面倒そうだったので、プラグインを使わず、RSS読み込み用のテンプレートを作成してインクルードした。

参考にしたサイト

wordpressでRSSフィードを取得して表示する方法
– いつか誰かの役に立つかもしれないweb制作屋の備忘録
https://blog.raizzenet.com/how-to-retrieve-rss-feeds-in-wordpress/

関数リファレンス/fetch feed – WordPress Codex 日本語版
https://wpdocs.osdn.jp/関数リファレンス/fetch_feed

SimplePie Documentation: API Reference
http://simplepie.org/wiki/reference/start#simplepie_item

カスタマイズ方法

まずはRSSを読み込むテンプレートを作成(今回はファイル名をrss_topics.phpとした)

RSSを読み込みたいテンプレート(今回はindex.php)の読み込みたい場所に下記を記述

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

カスタム投稿で記事が2個以上あったときだけ○○を表示する

レアなケースだったのでメモしとく。
特定のカスタム投稿のアーカイブで、記事が1個しかない時は表示したくないけど、2個以上あったら表示したいコンテンツがある時の条件分岐。

 

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

個別ページでトップページ用の設定画面を作成。更新をプレビューしたい

例えば、トップページに画像のスライダー(今回は「FlexSlider 2」を使用)を設置。画像はユーザーが管理画面からアップロードしたい。
更新時にはプラグイン「WP Post Branches」を使ってブランチページを作り、ブランチページでの変更をプレビューできるようにしたい。

参考にしたサイト

[WordPress] 非公開や下書きの固定ページを親ページに設定できるようにする – かちびと.net
http://kachibito.net/wp-code/add-private-draft

手順

1.固定ページでトップページの設定ページを作成。タイトルを「トップページの設定」、スラッグを「top_setting」として非公開で公開。

2.カスタムフィールドを簡単に設定できるプラグイン「Advanced Custom Fields」でトップページ用の設定画面に画像アップロード用のカスタムフィールドを作成。アドオン「Repeater」を使って、複数の画像をアップロードできるようにしておく。
カスタムフィールドの適用ルールは、
「ページがトップページの設定(private)と等しい」または「Page Parentがトップページの設定(private)と等しい」
とする。

3.function.phpで非公開、下書き状態のページを親ページに指定できるようにする。

4.「トップページの設定」ページのブランチを作成。親ページに「トップページの設定」ページを指定すると、トップページの設定用のカスタムフィールドが適用される。画像等変更して非公開にして公開。

5.function.phpでブランチのプレビュー先を変更する。

7.プレビューすると、ブランチの変更が反映されたトップページが表示される。

8.確認してOKだったら、非公開を公開に変更して更新。ブランチの内容が「トップページの設定」ページに上書き保存される。親ページの指定は自動的になくなる。

※ブランチを削除する時はゴミ箱からも完全に削除しておかないと、次にブランチを作成した時にブランチのスラッグがtop_setting-branchじゃなくなって動作が変わってしまうので注意。

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

特定のカスタム投稿タイプのプレビューのURLを変更する

特定のカスタム投稿タイプで投稿した記事をトップページで一覧表示して、各記事の個別ページは見せない。
というような場合、通常、編集画面のプレビューボタンからは個別ページのプレビューが表示されるけれど、それをトップページのプレビューが表示されるようにしたい。
そこで、プレビュー先をトップページに変更し、プレビュー中のトップページでは、投稿する権限を持つユーザーのみ下書きの記事も表示されるようにしました。

参考にしたサイト

Change preview post link in wordpress admin
Blogarama
http://www.blogarama.com/blogging-blogs/376674-wptricks24-wordpress-development-solutions-blog/5942030-change-preview-post-link-admin

手順

function.phpに以下を記述。カスタム投稿タイプtopicsの投稿のプレビュー先のURLをトップページのid「topics」にパラメーター「preview=true」をつけたURLに変更。

home.php(場合によってはfront-page.php)のtopicsを表示する箇所で、条件分岐。
投稿する権限(edit_posts)のあるユーザーとプレビュー用のURLの場合は、承認待ち・下書き・予約済・非公開の記事も一覧に含める。

条件分岐は、管理者のみとか、ログインしているかどうか(is_user_logged_in)など、見せても良い条件に合わせて変更します。

Posted in テンプレート作成, 管理画面カスタマイズ | Leave a comment

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

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