WordPressのサムネイル画像をイチから再生成するプラグイン「Regenerate Thumbnails」

WordPressは画像をアップロードすると、アップロードしたオリジナル画像の他に、管理画面の「設定」→「メディア」で設定したサイズの画像を生成します。
これらの画像はサイトのデザインに合わせてサイズを変更することが可能なので、デザインが決まっていれば、この画面で数値を入力してサムネイル等の画像を設定することができます。
ここで設定した画像は画像アップロード時に生成されます。

メディア設定

が、サイトのデザインが途中だったり、リニューアルしたりしてサムネイルの画像が変更になったり、また管理画面で設定できるサイズだけでは足りず、追加でfunction.phpで設定したりした場合、すでにアップロード済みの画像には適用されません。

そこで便利なのが今回紹介するプラグイン「Regenerate Thumbnails」です。このプラグインを実行することでサムネイル画像等を最初から作り直します。

  1. Regenerate Thumbnailsをインストール
  2. Regenerate Thumbnailsを有効化
  3. 「ツール」→「Regen.Thumbnails」
  4. Regenerate All ThumbnailsボタンをクリックRegenerate All Thumbnailsボタンをクリックサムネイル再生成中

このプラグイン、大変便利なのですが問題点も。不要になった画像はそのまま残るのです。サムネイル生成時に設定にない画像を削除してくれるプラグインもあるようですが、運営が長いサイトだと、どこかで使っている可能性もあるので、設定にないサイズだから「消せる」とも限りません。
この辺りは慎重に。

そんなに頻繁に使うものでもないと思うので、再生成後はプラグインを「停止」にしていいと思います。

MTをリバースプロキシで動作させた場合のログが127.0.0.1になる現象を回避する

Movable Typeをリバースプロキシ経由で動作させている場合、コメントや検索のログのIPが127.0.0.1になってしまいます(MTと公開サーバーが同じ場合)。これだと、どのIPからのアクセスが多いのか、どのIPをブロックしていいのかがわかりません。

ログが127.0.0.1になってしまった

このような場合、mt-config.cgiに以下の一文を記載すると回避することができます。(公式サイト

TransparentProxyIPs 1

 

[tmkm-amazon]4839948615[/tmkm-amazon]

ドメイン変更を伴うWordPressのサーバー移転

WordPressで運用しているサイトのサーバーを移転(ドメイン変更有り)する際の手順をメモします。

1. 現サーバーからサイトデータ全てをローカルマシンにダウンロード

2. 現サーバーのデータベースからデータをエクスポート

phpMyAdminが使用できる環境なら簡単ですね。

phpMyAdminエクスポート

3. wp-config.phpの内容を新サーバーに合わせる

ダウンロードしたwp-confing.phpの内容を新サーバーの設定に変更します。

/** WordPress のためのデータベース名 */

define(‘DB_NAME’, ‘**********’);

/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘**********’);

/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘**********’);

/** MySQL のホスト名 */
define(‘DB_HOST’, ‘**********’);

4. 新サーバーにサイトデータをアップロード

5. 新サーバーのデータベースにデータをインポート

phpMyAdminインポート

問題なければ新ドメインでトップページくらいは表示されるはずです。
これで移行完了と思いたいのですがリンクが正しく飛びません。これはデータベースに登録されているドメインが旧ドメインのままになっているからです。これを新ドメインに書き換える必要があるのですが、SQL文を使ってドメイン名を置換するだけだと不具合が生じることがあります。

6. データベース情報の書き換え(移行PHPダウンロード)

Interconnect ITよりWORDPRESS (AND OTHERS) SEARCH AND REPLACE TOOL(http://interconnectit.com/products/search-and-replace-for-wordpress-databases/)をダウンロード。ダウンロードしたsearchreplacedb2.phpを新サーバーのWordPressディレクトリにアップ。

7. 6でアップしたsearchreplacedb2.phpにアクセス

6でアップしたsearchreplacedb2.phpにブラウザでアクセスします。
例:http://www.example.com/searchreplacedb2.php

  1. 最初の画面では[Submit]をクリックsearchreplacedb2 STEP1
  2. wp-config.phpのサーバー設定情報が表示されるので内容を確認。問題なければ [Submit DB details]をクリックsearchreplacedb2 STEP2
  3. 書き換え対象とするテーブルを選びます。
    全て選択して問題ないかと。テーブルを選択したら[Continue]をクリックして次へ
     ※「Leave GUID column unchanged? 」にはチェックを付けない方がいいそうです。searchreplacedb2 STEP3
  4. Search forには旧ドメイン(検索対象)を、Replace wihtには新ドメイン(置換内容)を入力し、[Submit Search string]をクリック。searchreplacedb2 STEP4
  5. データベースのドメイン情報の書き換え完了searchreplacedb2 Finish

8. 7でアップしたsearchreplacedb2.phpを削除します。

これでサーバーの移行は完了です。

MTが出力するファイル名

Movable Typeのアーカイブテンプレートでは出力パスに様々な設定をすることができます。用意されている選択枠の中から選ぶ場合、entry_basename.htmlにするかentry-basename.htmlにするかでMTタグのEntryBasenameの扱いが変わってきます。

アーカイブマッピング

 

entry_basename.html(%f)

こちらはデフォルト設定のようです。この設定では出力ファイル名はアンダーバー(_)で区切られます。

例:post_hoge.html

MTタグでファイル名を出力する場合
<$EntryBasename$>.html

データベースにもこちらで記録されています。(MT5、MT6で確認)

entry-basename.html(%-f)

この設定の場合、出力されるファイル名はハイフン(-)で区切られます。

例:post-hoge.html

MTタグでファイル名を出力する場合
<$EntryBasename separator=”-” $>.html
※separator=”-“が必要になります。

WordPressのTinyMCE(ビジュアルエディタ)での見た目をブログと統一する

WordPressで記事を書く際、ビジュアルエディタを使っていると公開サイトとは違う見た目になってしまいます。これを公開サイトと揃えるにはテーマ内のfunctions.phpに以下を記載します。

これでテーマフォルダにあるeditor-style.cssが適用されるようになります。
テーマのsytle.cssを直接設定してもうまくいく場合もあります。これはコンテンツエリア以外のスタイルも反映されてしまうからです。
ですので、editor-style.cssなどビジュアルエディタ用のcssを別途用意して適用した方がいいでしょう。

BuddyPressの特定ページがログインしないと見れない

BuddyPressを複数のサーバーにインストールして検証しているのですが、ある環境でログインしないと見れないページがあることがわかりました。

見れないページとは
・グループページ
・メンバーページ
・活動

他にもあるのかもしれませんが、確認したのは上記です。
BuddyPressをインストールした状態では、本現象は起こらないのですが、あるプラグインをインストールすると発生します。

そのプラグインはこちら
BP-Registration-Options
このプラグインはBuddyPressの新規ユーザー登録を承認制にするものです。

上記にチェックが入っている状態で該当ページアクセスするとアカウント作成ページに飛ばされます。チェックを外せはこの動きは回避され、ログインしなくても該当ページにアクセスすることができます。

BuddyPress Registration Optionsの承認者のレベル設定

BuddyPress Registration Optionsの管理者のレベル設定

BuddyPressで新規ユーザー登録を承認制にするプラグイン「BuddyPress Registration Options」はユーザー登録後、管理者が管理画面でそのユーザーを承認するまで、そのユーザーは使用できません。
が、管理者とは最高権限を持つユーザーのことで、複数の人間で管理しているような場合、これでは都合が悪いことがあります。
そこで、ある権限を保有するユーザーまで承認できるようにします。

bp-registration-options/includes/admin.php
を変更します。

136行目あたりの

 

のadministratorの部分を適当なユーザーロールに書き換えます。
ユーザーロール名についてはこちらのページを参照

設定したロールよりも上位の権限をもつユーザーは新規登録ユーザーを承認することができるようになります。

BuddyPressのユーザープロフィールから不要なリンクを取り除く

BuddyPressにユーザーを登録し、プロフィールを入れると下の画像のように不要な部分(赤線)にリンクが設定されることがある。このリンクをクリックすると同じ内容のユーザーをまとめて表示してくれるのだが、それが不要な場合もある。

リンクが設定されてしまっている状態

そこでこのリンク設定を削除し、リンクされていない状態にしたいと思います。

BuddyPressフォルダ内の

bp-xprofile/bp-xprofile-filters.php

を編集します。

上記を検索し、コメントアウトすることでメールアドレス以外からリンクを消すことができます。

BuddyPressで特定のユーザーをメンバー一覧に出さない

BuddyPressでSNS的なサイトを運用するとき、メンバーページには当然全てのユーザーが表示されます。ところがSNSには参加しないけどBuddyPressを管理したいユーザーが居た場合、メンバーページにそのユーザーが表示されてしまうと都合が悪いときがあると思います。
そんな管理ユーザーをどうやってメンバーページに表示させないようにするか調べたところデータベースの値を操作することで非表示にすることができました。

画像はphpMyAdmin

phpMyAdmin

phpMyAdmin
wp_userのuser_statusの値を0以外にします。
画像では100にしています。

メンバーページには表示されませんが、その他の操作は可能です。ですがSNS内でなんらかの活動(コメント投稿、グループ参加など)をしてしまうとせっかく非表示にしたユーザーの存在がバレてしまいますので注意が必要かな。

WordPress:管理画面「外観→ウィジェット」の不要なウィジェットを非表示に

管理画面の「外観→ウイジェット」にはデフォルト様々なウィジェットが登録されている。さらにプラグインなどをインストールすると、このウィジェットが増えたりする。
が、全てのウィジェットを使用することはまずない。サイトを管理しているのが自分自身だけならそれでも問題ないが、複数の人間で管理する場合、余計なウィジェットがあると予期せぬ操作をしてしまいかねない。
そこで使用していないウィジェットは非表示にしてしまおう。

以下のコードをfunctions.phpに追記

function名は自由。

クラスの一部
【デフォルトウィジェット】

WP_Widget_Archives // アーカイブ
WP_Widget_Categories // カテゴリー
WP_Widget_Calendar // カレンダー
WP_Widget_Meta // メタ
WP_Widget_Pages // 固定ページ
WP_Widget_Recent_Comments // 最近のコメント
WP_Widget_RSS // RSS
WP_Widget_Search // 検索
WP_Widget_Tag_Cloud // タグクラウド

 

【Buddypress】

BP_Blogs_Recent_Posts_Widget // 最近の Networkwide 投稿
BP_Core_Members_Widget // メンバー
BP_Core_Recently_Active_Widget // 最近活発なメンバー
BP_Core_Whos_Online_Widget // オンラインのメンバー
BP_Groups_Widget // グループ

プラグインで追加されたウィジェットはプラグインの中でclass定義されているのでそれを記載すれば非表示にできる。