WordPress メルマガ用ランダム記事一覧

WordPress の過去の記事に対してまとめてアイキャッチ画像を設定する Auto Post Thumbnail プラグイン

WordPress O2 ビジネステーマのグローバルメニューのサブメニュー幅が足りないときの対処方法

[WordPress] パスワード保護をかけた投稿/固定ページの有効期限を変更(延長・短縮)する

WordPressで管理画面の特定のページかどうかを判断するPHPスクリプト

WordPressで自動更新を停止する方法

WordPressで投稿記事に設定したカスタムフィールドを取得したい

WordPress のショートコードで囲った文字列を使う方法


WordPress の過去の記事に対してまとめてアイキャッチ画像を設定する Auto Post Thumbnail プラグイン

プロが教える WordPress セミナー開催中!

アイキャッチ画像とは

アイキャッチ画像とは WordPress 2.9 からの新機能で、記事に対して一目でどんな内容かを示すイメージ画像を指定することができる機能です。

問題

しかし、2.9 よりも前から WordPress を運用していた場合、過去の記事にはアイキャッチ画像は当然存在せず、指定するためには記事毎に編集する必要があるため、記事数が多いサイトだと非常に大変な事になるでしょう。

私のブログでは既に 2,000 近く記事が存在していたので、手作業でやるのは嫌すぎです(笑)

解決策

そこで、アイキャッチ画像が付いていない記事に対して、自動的に付けるプラグインの紹介です。

Auto Post Thumbnail と言うプラグインで、一度インストールして実行するだけで OK と言うとても便利なやつです。

手順

インストールは、WordPress の管理画面から「プラグイン|新規追加」メニュー、「検索」ワードに「Auto Post Thumbnail」を指定して「プラグインの検索」をクリックすれば、恐らく最初に出てくるでしょう。

「今すぐインストール」して「有効化」してください。

続いて、WordPress の管理画面から「設定|Auto Post Thumbnail」メニューを選択します。

Auto Post Thumbnail 設定メニュー

Auto Post Thumbnail 設定メニュー

画面の中の「Generate Thumbnails」ボタンをクリックするだけです。

実行中は次のような画面が表示され、進行状況を見ることができます。
自分の場合は、20分ぐらいで終わった気がします(たぶん)。

Auto Post Thumbnail 実行中

Auto Post Thumbnail 実行中

100% になれば、画像が含まれている全ての記事にアイキャッチ画像が追加されているはずですので、いくつか確認してみると良いでしょう。

まとめ

プラグイン一つでとても簡単にアイキャッチ画像を記事に指定することができました。
アイキャッチ画像を表示するテーマや関連記事表示系のプラグインを使っている方であれば、アイキャッチ画像の有無は見た目にかなりの影響を及ぼします。

記事自体が壊れたりする機能ではないので、おすすめのプラグインではないでしょうか。

WordPress O2 ビジネステーマのグローバルメニューのサブメニュー幅が足りないときの対処方法

この記事を書いた背景

WordPress のテーマ機能を使うと様々なテーマが利用できますが、
有名どころの一つに O2 ビジネステーマがあります。

参考:O2ビジネステーマ

しかし、ここのテーマの中には、グローバルメニューのサブメニュー部分が表示されたとき、幅が足りないことがあります。

O2ビジネステーマのサブメニュー

その対処方法についてのメモ。

原因

CSS で幅が固定されているのが原因です。

対処方法

CSS を変更してしまいましょう。

私の場合は、Jetpack プラグインの機能を使いました。
「外観|CSS 編集」メニューを開き、下記の CSS を追加してお終いです。

nav#mainNav ul li li {
    width: 280px;
}

対象のメニュー幅の「width」属性を固定値でピクセル指定しました。

メニュー幅なので、本来は動的にするなどが必要かとは思いますが、まずは見えることを前提にすれば上記のような方法でも問題は少ないでしょう。

まとめ

WordPress のデザインはどのようなこともできますが、その分作り手のスキルにとても依存しやすいと言えます。

WordPress を使えば SEO 対策がバッチリとか言うのはかなり表現としては微妙なので、鵜呑みにしないでくださいね。

正しく設定すれば が条件です。

[WordPress] パスワード保護をかけた投稿/固定ページの有効期限を変更(延長・短縮)する

wplogo

<

p style=”clear:both;”>

WordPress では、投稿や固定ページにパスワード保護を付けることができます。
このパスワード保護機能は、パスワードを入力すると標準では10日間はアクセスが可能になります。
※他のパスワード保護ページを開いたり、セキュリティソフトやブラウザの種類によって、強制的にリセットされる場合はあります。

WordPress のパスワード保護機能は、Cookie の仕組みを使っているので有効期限を調整できます。

具体的には、お決まりの functions.php に下記を追加すればOKです。
※私の場合は「functions.php」では無く「Code Snippets」)で導入してます。

function custom_post_password_expires() {
    return time() + HOUR_IN_SECONDS ;
}
add_filter('post_password_expires', 'custom_post_password_expires' );

コード内の「HOUR_IN_SECONDS」は他にも下記のような記述が可能です。
(WordPress 3.5 から、時間を表記しやすくする定数がいくつか導入されています)

MINUTE_IN_SECONDS  = 60 (seconds)
HOUR_IN_SECONDS    = 60 * MINUTE_IN_SECONDS
DAY_IN_SECONDS     = 24 * HOUR_IN_SECONDS
WEEK_IN_SECONDS    = 7 * DAY_IN_SECONDS
YEAR_IN_SECONDS    = 365 * DAY_IN_SECONDS

 
この方法の他にも、Cookie 自体を保存しないようにすることで、毎回パスワードを入力させるようにもできますが、同一パスワードによる複数ページにまたがったページ保護を行っている場合などでは、毎回入力させるのは面倒なので、有効期限を短縮する程度にしておいた方が利便性が損なわれません。

WordPressで管理画面の特定のページかどうかを判断するPHPスクリプト

    <div style="padding:36px 12px;">
        <a href="http://www.dreamhive.co.jp/services/wordpress-workshop"  alt="プロが教える WordPress セミナー開催中!"><img src="http://www.dreamhive.co.jp/images/wp_seminar_nowopen.jpg" alt="プロが教える WordPress セミナー開催中!" title="プロが教える WordPress セミナー開催中!" /></a>
    </div><img src="http://blog.dreamhive.co.jp/yama/wp-content/uploads/2016/08/e44dfc41a3f4601a79fbd4d4b80df8e2.jpg" alt=" WordPressで管理画面の特定のページかどうかを判断する方法" width="768" height="250" class="alignnone size-full wp-image-13801" srcset="http://blog.dreamhive.co.jp/yama/wp-content/uploads/2016/08/e44dfc41a3f4601a79fbd4d4b80df8e2.jpg 768w, http://blog.dreamhive.co.jp/yama/wp-content/uploads/2016/08/e44dfc41a3f4601a79fbd4d4b80df8e2-300x98.jpg 300w, http://blog.dreamhive.co.jp/yama/wp-content/uploads/2016/08/e44dfc41a3f4601a79fbd4d4b80df8e2-320x104.jpg 320w" sizes="(max-width: 768px) 100vw, 768px" />

この記事を書いた背景

WordPressでプラグインを作る際、管理画面のみだったり、特定の管理ページでしか使わないコードをすべてのページで読み込ませるのは無駄な実行時間を使ってしまうので、なんだか精神衛生上よろしくないですよね。

そこで、管理画面のチェックを行う方法についてメモしておきます。

利用するコード

今回の状況を回避するには3つの技術が必要でした。

管理画面かどうかのチェック

WordPressで管理画面かどうかをチェックするには、is_admin() 関数を利用します。

この関数は、ダッシュボードや管理画面の表示中であればtrueを返します。

参考:関数リファレンス/is admin

現在表示しているページのチェック

現在表示しているページが何かをチェックするには、管理用グローバル変数である $pagenow を利用します。

例えば、「投稿」や「固定ページ」であれば「edit.php」を返します。

参考:グローバル変数

途中で実行を中断するコード

上記のチェックの結果、if() によってPHPスクリプト全体を囲うのもコード的には間違っていませんが、正直 if() の入れ子はダサいと思います。

WordPressでプラグインを読み込むコードは、wp-settings.php 内に次のように書かれています。

// Load active plugins.
foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
    wp_register_plugin_realpath( $plugin );
    include_once( $plugin );
}

有効なプラグインのみを include_once() で取りこんでいるわけです。

ここで、PHPスクリプトの実行を中断するコードとして retrun を使います。

return はグローバルスコープで利用すると実行中のスクリプトが終了してしまいますが、include や require されている場合は呼び出し元に制御が戻りますので、先のプラグインの読み込みコードを考えればループに戻ってくれるわけですね。

参考:return

完成版のコード

上記の3つのコードを組み合わせて考えます。

例えば、管理画面の「投稿」や「固定ページ」のみで利用するコードをプラグインで実現するには、プラグインの先頭で次の条件分岐コードを記述します。

if ( !is_admin() || ($pagenow != 'edit.php') ) {
    return;
}

管理画面かどうか、もしくは現在のページが edit.php かどうか、の順で評価させてます。

まとめ

どの程度実行パフォーマンスに影響があるかはわかりませんが、入れ子の気持ち悪さは解消されているので自分的に満足しています。

WordPressのコアファイルのコードを読むというのもまた面白いですね。

WordPressで自動更新を停止する方法

WordPressはバージョンアップを自動で行ってくれます。
しかし、社内でのブラウザの利用規程などで、自動でバージョンアップをされても困る場合があります。

その際は、設定ファイルを書くことによって、自動更新をさせない方法があります。

wp-config.phpに更新をしない記述を追加する

define( 'AUTOMATIC_UPDATER_DISABLED', true );

最後に、セキュリティの観点からだと、バージョンアップは行った方が良いと考えますので、
どうしてもの場合のみ行ってください。

WordPressで投稿記事に設定したカスタムフィールドを取得したい

プロが教える WordPress セミナー開催中!

(1) カスタムフィールをを表示する
オプション

画面上部の表示オプションをクリックして「カスタムフィールド」をチェック

(2) 投稿ページのカスタムフィールドに名前と値を入力する
記入

(3) 値の取得

< ?php echo get_post_meta($post->ID , '天気' ,true); ?>

テンプレートなどに上記プログラムを記載すれば表示!!

WordPress のショートコードで囲った文字列を使う方法

プロが教える WordPress セミナー開催中!

背景

WordPress では、あらかじめ登録してある PHP の関数を呼び出せる「[」と「]」を用いたショートコードという機能があります。

こちらの記事でショートコードの作り方は説明したのですが、ショートコードで文字列を囲んで渡す方法について今回は記事にしてみました。

コード

とりあえず、次のコードを functions.php に追加します。

function showcontent_func($atts, $content = null) {
	return "→{$content}←";
}
add_shortcode('showcontent', 'showcontent_func');

続いて投稿や固定ページに次のコードを書き、表示してみましょう。

[showcontent]中身だよ![/showcontent]

こんな感じで見えると思います。

→中身だよ!←

解説

ここでのポイントは、第2引数です。

第1引数にはショートコードへ渡された引数が連想配列で含まれますが、第2引数はショートコードで囲われた文字列が渡されます。

注意点としては、ショートコードへの引数は通常 shortcode_atts() によってチェックしますが、第2引数はそのチェック機能がありません。
そのため、引数のデフォルト値として null を渡すようにしてあります。

参考:
ショートコードAPI – WordPress Codex

応用

ショートコード内に書かれたショートコードは、そのままでは機能しません。
例えば次の様なコードは、内側のショートコード(innnercode)は無視され、外側のショートコード(showcontent)しか動かないと言うことです。

[showcontent][innnercode]中身だよ![/innnercode][/showcontent]

この様にネストされたコードを実行するようにするためには、次の様にショートコードの定義で do_shortcode() 関数を呼び出すようにします。

function showcontent_func($atts, $content = null) {
	return '→' . do_shortcode($content) . '←';
}
add_shortcode('showcontent', 'showcontent_func');

参考:
do_shortcode()

まとめ

囲み型ショートコードを使う事で、応用の範囲が大きく広がることがわかりますね。

あなたの IT の疑問・不安をすべて解決するコンシェルジュ サービス