Easy FancyBoxを1.6.3に更新後に管理画面が表示されなくなる現象の修正方法

WordPressで利用している「Easy FancyBox」というプラグインをバージョン1.6.3に更新したところ、WordPressの管理画面が表示されなくなりました。ウェブサーバのログを確認したところ、以下のようなエラーが出ていました。

調べたところ、PHP5.4以降でのみ対応している構文が使われているためだということがわかりました。
修正するには、WordPressが動いているシステムのPHPを5.4以降に更新するか、プラグインのディレクトリの inc/class-easyfancybox-admin.php の21行目の []array() に変更します。

コードで見ると、修正前は以下のようになっています。

これを以下のように修正します。

これで、管理画面が表示されるようになります。

jQuery Toolsのドメイン期限切れとArconix Shortcodesプラグインの修正方法

jQuery Toolsのページ でも案内されているjQuery Tools UI libraryの公式の読み込み元である http://cdn.jquerytools.org/1.2.6/full/jquery.tools.min.js が、ドメイン期限切れのため、アクセスできなくなっています(2017年12月24日現在)。

その影響で、Arconix ShortcodesというWordPressのプラグインが正常に動作しなくなっています(2017年12月24日現在)。

jQuery Tools UI libraryの読み込み元にアクセスできるようになるか、プラグインの側で正式に対応するまでの応急処置として、プラグインのコードに以下の修正をしました。

修正方法は以下の通りです。
プラグインのコードにある、上記のアクセスできなくなったサイトにある「jquery.tools.min.js」のURLを指定している部分を、プラグインに含まれる「jquery.tools.min.js」のURLになるように修正します。
具体的には、「wp-content/plugins/arconix-shortcodes/plugin.php」の107行目

に変更すれば、修正完了です。(URLが異なる場合は適宜修正してください。)

更新(2017-01-09)
Arconix Shortcodes のバージョン 2.1.2 で、この問題に対処済になったようです。

レコード毎のINSERT文になるようにmysqldumpでダンプする方法

先日、WordPressで作成したサイトのサーバ移設作業をしていたのですが、mysqldumpで作成したダンプファイルを移設先サーバのMySQLにロードしようとしたところ、「Got a packet bigger than ‘max_allowed_packet’ bytes」というエラーが出ました。

解決策を調べたところ、MySQLサーバの「max_allowed_packet」という値を変更する方法が見つかったのですが、今回その方法は使えませんでした。mysqldumpで生成したダンプファイルのエラーになった箇所を調べたところ、大きいテーブルのすべてのレコードをひとつの「INSERT INTO」文によって挿入するようになっていたため、この文のサイズが「max_allowed_packet」を超えているのがエラーの原因であることがわかりました。

そこで、mysqldumpでダンプファイルを生成するときに、レコード毎のINSERT文にする方法を調べました。具体的には、

のように生成されるのを、

のように生成されるようにする方法です。

その方法ですが、mysqldumpを実行するときに、「--skip-extended-insert」というオプションを付けるだけです。例えば、以下のように実行します。

このように生成したダンプファイルの難点は、ロードするのに時間がかかることですが、場面により、適宜使っていこうと思います。

WordPressで日本語名のファイルをアップロードするには

お客様から「日本語名のファイルをアップロードしようとしたらファイル名が文字化けしてしまった、どうにかならないか」とお問い合わせをいただき対策を行いました。

WP Multibyte Patch プラグインが影響

「WP Multibyte Patch」プラグインを有効化しているため起こった現象でした。「WP Multibyte Patch」プラグインを有効化していると、日本語のファイル名を md5ハッシュ値に変換するためだそうです。正確には文字化けではなく変換されたハッシュ値のようです。

対策

以下の通り、設定変更を行いました。

  1. wp-content/plugins/wp-multibyte-patch/wpmp-config-sample-ja.php を wp-content にコピーします。
  2. wp-content にコピーした wpmp-config-sample-ja.php を wpmp-config.php というファイル名に変更します。
  3. wpmp-config.php から $wpmp_conf[‘patch_sanitize_file_name’] の行を探し、値を「true」から「false」に変更します。

参考

以下のリンクを参考にさせていただいました。
WordPressで日本語のファイル名をアップロードする方法

Linuxをメインの作業環境としていると「ファイル名は英数字」と固定観念があり全く気づきませんでした。調べてみたところ、立ち上げ時にアップロードしたファイルはすべて英数字になっていました。習慣ってすごいですね。

WordPressで投稿した記事を自動的にTwitterに投稿するには

WordPressで投稿した記事を自動的にTwitterに投稿する方法です。
上記の機能を実現するプラグインはたくさんありますが、画像を一緒に投稿できる NextScripts: Social Networks Auto-Poster プラグインを使用しました。

プラグインのインストールと設定

  1. NextScripts: Social Networks Auto-Poster プラグインをインストールします。
  2. インストールが完了したら、サイドメニューの「設定」→「{SNAP} Social Networks Auto Poster」をクリックします。
  3. 連動するTwitterアカウントを登録します。「Add new account」をクリックします。
  4. 「Add NEW Network」から「Twitter」を選択します。
  5. Twitterアプリケーションの情報を入力します。
    ※事前にTwitterアプリケーションを作成しておく必要があります。Twitterアプリケーションの作成方法
  6. 連動するために作成されたTwitterアプリケーションをクリックします。
  7. 「Keys and Access Tokens」タブをクリックします。「Consumer Key(API Key)」および「Consumer Secret(API Secret)」に記載された情報をWordPressの設定に入力します。更に、画面をスクロールして「Your Access Token」にある「Create my access token」ボタンをクリックします。「Access Token」と「Access Token Secret」に記載された情報をWordPressの設定に入力します。

    Twitterに画像も一緒に投稿する場合は、WordPressの設定画面で「Attach Image to Twitter Post」をチェックします。

    すべての入力が完了したら「Update Settings」ボタンをクリックします。
  8. アカウントが追加されたことを確認してください。
  9. WordPressから投稿してTwitterに自動的に投稿されれば設定完了です。

Twitterアプリケーションの作成方法

Twitterアプリケーションは https://dev.twitter.com/ から作成します。
※Twitter ホームの「開発者」をクリックすると同じところに移動します。

  1. 画面右上の「My apps」をクリックします。
  2. 画面右上の「Create New App」をクリックします。
    ※既に登録済みのアプリケーションがある場合はその一覧も一緒に表示されます。
  3. 各項目を入力します。入力が完了したら、画面左下の「Developer Agreement」をチェックして「Create your Twitter application」をクリックします。

    ※Twitterアカウントに「携帯の電話番号」が登録されていない場合はエラーになります。
    その場合は、Twitterアカウントの「設定」→「モバイル」の「携帯の電話番号」に電話番号を追加してから有効化されたのを確認して、再度、設定してみてください。
  4. アプリケーションが一覧に作成されれば作成完了です。

WordPressプラグイン「FancyBox for WordPress」がうまく動作しない場合の対応

弊社のホームページですが、画像の表示にWordPressのプラグイン「FancyBox for WordPress」を使用しています。WordPressのマルチサイト機能を使って、複数のサイトを管理しているのですが、「FancyBox for WordPress」がサイトAでは動作しているのに、サイトBでは動作していないという現象が起こりました。

いろいろ調べたところ、複数のプラグインをインストールするとjQueryが多重ロードされてしまい、それが競合して動作しなくなってしまう場合があるようです。

「FancyBox for WordPress」には、設定で項目をチェックするだけで多重ロードを避けてくれる便利な機能があります。私のような初心者にはとても助かります(^-^)

設定の変更方法です。

  1. 設定の変更を行うサイトのダッシュボードを開示します。
  2. メニューの[設定]→[Fancybox for WP]をクリックします。

    WordPress

  3. 設定画面が開示したら「Troubleshooting」タブを選択します。「Skip jQuery call.Use this only if jQuery is begin loaded twice(default: off)」にチェックし、「Save Changes」ボタンをクリックします。

    FancyBox設定画面

  4. 設定を変更しても現象が変わらない場合は、「Revert to defaults」ボタンをクリックして設定を初期化します。

WordPressで作成したページのサイドバーをページ毎に変更するには

まず、全てのページに共通のサイドバーを表示する方法です。

  1. サイドバーに表示する内容を記述した wp-content/themes/(テーマ)/sidebar.php を作成します。
  2. get_sidebar()関数をコールします。

次に、ページ01 とページ02 に別々のサイドバーを表示する方法です。
ページ01 には sidebar-pat01.php に記述された内容を、ページ02には sidebar-pat02.php に記述された内容を表示するものとします。

  1. wp-content/themes/(テーマ)/sidebar-pat01.php および wp-content/themes/(テーマ)/sidebar-pat02.php を作成します。
  2. 引数を指定して get_sidebar()関数をコールします。引数は、sidebar-{name}.php の {name} の部分になります。

WordPressのパーマリンクを変更したら「Not Found」が表示された場合の対策

WordPressを使ってホームページを作成しています。
「パーマリンク設定」をデフォルトのままページを一通り作成しました。

「パーマリンク設定」を変更しないと、各ページのURLは
http://(ホスト名)/?page_id=(数字)
のような形式になります。

デフォルトのままでは何のページかが分かりずらいため、URLの変更を行うことにしました。
手順としては、パーマリンクの共通設定を変更し、その後、個々のページのURLを変更します。

パーマリンクの共通設定は、以下の手順で変更することができます。

  1. ダッシュボードから [設定] → [パーマリンク設定]を選択します。
  2. 開示されたページの [パーマリンク設定] → [共通設定] を変更します。

パーマリンクの共通設定を変更したら、個々のページのタイトルの下にある「パーマリンク」を編集します。
permanent

以上の手順でURLの変更を行ったページを表示してみると、「Not Found」が表示されました。
変更を行ったページを正常に表示するために、いくつか設定を行いました。

【動作環境】Ubuntu 14.04 LTS、Apache 2.4.7
※ サーバ環境により異なるため、設定が必要のない場合もあります。

❋ Apache の 設定を変更します。

  • mod_rewrite を有効にします。
  • 有効になったことを確認します。
  • /etc/apache2/sites-available/000-default.conf に以下の設定を追加します。
    ※ WordPress が /var/www にインストールされている場合。
  • Apache 再起動します。

❋ WordPressがインストールされているディレクトリに .htaccess を作成します。

  • index.phpが置かれているディレクトリに、空の .htaccess を作成します。
  • 書き込み権限を付加します。(権限の範囲はサーバの設定による)
    ※ [パーマリンク設定]画面に以下の記述が出力されている場合は書き込みに失敗しています。その場合は、書き込み権限の範囲を広げます。権限の範囲はサーバの設定によります。
    writeError
  • 正常に自動更新された場合は、.htaccess に以下の内容が追記されます。

自作テーマでプラグインが動作しない時の対策

WordPressでトップへ戻るボタンを作成しようと、「Dynamic To Top」および「Scroll Top and Button」プラグインをインストールしました。

動作せず…。

自作テーマで作成していたため、以下のコードが抜けていた事が原因でした。

  • header.php の </head> 直前に以下のコードを追加。

  • footer.php の </body> 直前に以下のコードを追加。

以上のコードを追加すると、ページ先頭にツールバーが表示されます。
そのため、
ダッシュボード : 「ユーザ」→「あなたのプロフィール」から「サイトを見るときにツールバーを表示する」
のチェックをはずして、ツールバーを非表示にしました。