WPプラグイン – 更新中にエラーが発生しました: ダウンロードに失敗しました。 Unauthorized

WordPressプラグインを更新したところ、以下のエラーが表示された。

CM Tooltip Glossary Pro+ の更新中にエラーが発生しました: ダウンロードに失敗しました。 Unauthorized

よく見ると、ダウンロードリンクが表示されていたため、アクセスしてみたところ、「Your download link has expired」と表示された。
おそらく、セッションかなにかの期限が切れたから、ダウンロードできない状態になってしまっているだけっぽい。

しょうがないため、対象のプラグインサイトにログインしてプラグインをダウンロード後に手動で更新(pluginsフォルダに直接ぶちこむ)して解決した。

参考サイト

【WordPress】DigiPress専用プラグインが更新できないときは手動で更新しよう!そして、もうひとつの方法とは!?

用語集プラグイン CM Tooltip Glossary Pro+の設定

有名な用語集プラグインの無料版「CM Tooltip Glossary」だと、標準の投稿や固定ページには用語ハイライトに対応しているのですが、ACFで登録したカスタムフィールドには対応されていません。有料版の「CM Tooltip Glossary Pro+」を購入するとACFにも対応することができます。

用語ハイライトのイメージ

以下は、「昇華印刷」という用語と説明文を登録したため、該当キーワードにマウスを重ねると、説明が表示されます。

なお、キーワードの前後には空白のスペースを入れることで、用語ハイライトとして認識されるようになります。

実際の動作イメージはこちらを参照(「スペック」という箇所に用語ハイライトがあります) → MassdropでALTキーボード購入 – コトコト

ACFのカスタムフィールドへの対応

有料版の「CM Tooltip Glossary Pro+」を購入したあと、該当プラグインの「Settings」メニュー > 「General Settings」タブより、以下の設定を行います。

  • Highlight terms in ACF fields? → チェック入れる
  • Types of fields to highlight → チェック入れる

    ハマりポイント1

    「Types of fields to remove the WP functions:」は、チェックを入れると、改行が自動削除されます。意図しない挙動を防ぐため、チェックを外したほうがよいでしょう。

    ハマりポイント2

    ACFのカスタムフィールドに、のショートコードだけを入力しているような場合(たとえばInstagramだけ入力)、CM Tooltip Glossaryプラグインの上記設定と競合してうまく表示されませんでした。
    なんでもよいため、カスタムフィールドには冒頭に文字が入力されている必要があります。

カスタム投稿タイプへの対応

カスタム投稿タイプかつACFのカスタムフィールドを利用していますが、そのままの設定で動作しました。特に意識する必要はないようです。

関連キーワードを非表示にする

記事の下部に、以下のような形で「Related Terms:」という関連するキーワードが自動的に表示されてしまいます。

「Settings」メニュー > 「Glossary Terms」タブより、以下の設定で非表示にできます。

  • Show linked glossary terms list under post/page? → チェック外す

補足

記事の中身をいろいろと変えてしまうようなので、設定は一通り、ご覧になることをオススメします。

WP Twenty Seventeenテーマの1カラム表示

先ほどWordPressのTwenty-Seventeenテーマがver1.6への更新通知がきていたので更新したところ、表示が2カラム形式に戻ってしまっていた。本来は1カラムで設定をしていた。

  • 外観 > カスタマイズ > テーマオプション(この時にプレビュー表示が固定ページじゃないとこのメニューが表示されない) > 1カラム に設定する
  • 外観 > カスタマイズ > ウィジェット > ブログサイドバー で全てのウィジェットを削除する

雑な感じだったけど、これでもとの1カラム表示に戻った。

WordPress ACF ProのInstagramとYouTube表示が異常に重い

WordPress ACF Proプラグインでカスタムフィールドを作成して、InstagramとYouTubeコンテンツをフィールドタイプ「oEmbed」を使って、10件ほど登録したところ、表示までに8秒ほど時間がかかり、異常に遅くなった。

やったこと

フィールドタイプ「Wysiwyg」に置き換えてから、URLを貼り付けて登録したところ、劇的に改善した。表示速度が0.18秒になった(元々のKUSANAGIの速さに戻った)。

原因はわからず

WordPressのoEmbed機能自体は全く問題なく、ACF ProのoEmbedフィールドタイプが問題と思われるが、バグ情報などが見つからず、原因わからず。もしかしたらACFではない可能性もあるが、ひとまずACF ProのoEmbedは利用しないでおく。(非常に便利だったので改善されたらまた使いたい)

ACF Proの柔軟コンテンツ

プライベートでWordPressのプラグイン ACF Pro を購入して柔軟コンテンツを利用したため、そのメモ。

柔軟コンテンツの超わかりやすい図解はこちら。
[WordPress] Advanced Custom Fieldsの拡張パッケージ、Flexible Content Fieldの使い方

柔軟コンテンツの登録例

柔軟コンテンツの中に柔軟コンテンツを入れる、っていう入れ子の構造も可能。
ACF Proの繰り返しフィールドの中に繰り返しフィールドを入れる、っていう入れ子と同じ仕組みが使える。

柔軟コンテンツの入力例

「行を追加」ボタンで柔軟コンテンツを呼び出せる。
以下の画像はすでに呼び出した後だが、右下にそのボタンを押したときにパターン選択できる模様も表示しておいた。

ACF ProはPersonal(1サイトのみ利用)で日本円で2,000円ぐらいだった。
がんばって開発するぐらいなら、これ買ったほうが確実に楽できる。安いし。
Developer(サイト無限に利用)はいつでもアップグレードできるらしいので、まずはPersonalからスタート。

WP Mail SMTPでOAuth認証するときに401エラーが出る場合

WordPressのWP Mail SMTPやRubyとかでOAuth認証を実装するときに、「Client ID」と「Client Secret」を作成するアプリケーション側に記述することになるが、OAuth認証を実行しようとすると、Google側には遷移するものの、「401. That’s an error.」と表示される。
これは、「Client ID」や「Client Secret」がちゃんと入力されていない可能性がある。Google Cloud Platform側でそれらの値をコピーしてから、ペーストすると、なぜか文頭と文末に空白(スペース)が入ってしまう。このスペースが入っていると動作しないため、前後にスペースが入ってしまっていないか要注意。(HanamiのOAuth認証実装時と、WordPressのOAuth認証実装時と、2回もこれでハマってしまった。)

この画面でコピーすると、すでに空白も一緒にコピーされている

OAuth認証を実行すると401エラー

参考サイト

WordPressで多階層カテゴリーに紐付けて投稿するとパンくずがバグる

■パンくずに使用したプラグイン
 ・Breadcrumb NavXT
 ・Yoast Breadcrumbs


■やりたいこと

 下記の通り紐付けて投稿をしたい。

 

 【紐付けカテゴリー】

    ■宇宙

     ■地球

      ■日本

      □アメリカ

      □ドイツ

    (■ = 紐付け対象カテゴリー、 □ = 紐付けないカテゴリー)

 

 【パンくず】

  Home > 宇宙 > 地球 > 日本

 

 【投稿内容】

  これは宇宙からみた日本です

■現象

 パンくずが下記のようになってしまう。

 Home > 宇宙 > 地球 > これは宇宙からみた日本です

 

 本当はこうしたい↓

 

 Home > 宇宙 > 地球 > 日本 > これは宇宙からみた日本です

 

■原因

 下記をおこなったことでゴミデータっぽいものが

 残っているような感じ。明確な原因分からず。

 ただ、ひとつ言えるのは、色々いじりすぎなほうが

 いいこと。自分が行ったのは主に下記のようなこと。

 

 ・カテゴリーを追加して削除を繰り返す

 ・カテゴリーの親を変えまくる

 ・ テスト投稿でカテゴリーを紐付ける → カテゴリーを削除

  → カテゴリーを復活 → テスト投稿を削除

 

 などのように色々テストしていた。


■対応策

 根本的な解決策ではないが、親カテゴリーを

 紐付けずに最下層けカテゴリーのみ

 紐付ける。つまり下記のように紐付ける。

 【紐付けカテゴリー】

    □宇宙

     □地球

      ■日本

      □アメリカ

      □ドイツ

    (■ = 紐付け対象カテゴリー、 □ = 紐付けないカテゴリー)

 

 「日本」は親カテゴリーを「地球」にし、地球は「宇宙」に

 なっているため、パンくずは想定通りに表示された。

Mac x XAMPP x WordPress x プラグイン・自動アップグレードがエラー

■環境
MacBook Air MC505J/A
XAMPP 1.7.3
WordPress 3.1.4-ja

■現象
プラグインやWPの自動アップグレード(自動アップデート)を
するとFTP接続情報が表示されたり、こんな感じのエラーが出る。

—————————-
failed to open stream: Permission denied in 〜〜〜 class-wp-filesystem-direct.php on line 202
ファイルをコピーできませんでした。
インストール失敗
—————————-

対応しても次々と色んなエラーが出てしまい、tmpフォルダに
パーミッションがないだの、接続情報 FTPを接続しろだの
キリがない。

■原因
FTP接続の設定になっていたりApacheの実行ユーザーが
nobodyになっていることなどが原因。

■対応策
ネット上を見ると、これもまたキリがないほど
たくさんの対応策が載っていて、環境によって
大きく異なるようだ。あらゆるフォルダの
パーミッションをchmod 777にしたり、
chown -R _www:_www とか試しまくったが
下記の方法2点のみで解決した。

1.wp-config.php に最下部に下記を記載する。
これがFTP接続情報を回避する方法となる。
 ——————————
define(‘FS_METHOD’,’direct’);
——————————

2./Applications/XAMPP/etc/httpd.conf の
user と group を自分のユーザー名に変える。
コピーできないとかパーミッションがなんとか
言われた場合の回避方法。

 ——————————
138 #User nobody
139 #Group nogroup
140 User 自分のユーザー名
141 Group 自分のグループ名
 ——————————

ちなみにユーザー名の一覧は /etc/password に記載してある。

■備考
色々やってどうしても解決しない場合は、苦肉の策として
XAMPP の代わりに MAMP を使えば
一発で動くとの情報あり。

■参考サイト
[WordPress3.0]テーマ、プラグインインストールでFTPの接続情報を求められる。
XAMPP環境でWordPressの自動アップデートを可能にする 

■英語圏の方用 for English
 If you get error “FTP connetion” or “permission denied” When you upgrade or install plugin, you should try these.

1. write below sentence in wp-config.php.
define(‘FS_METHOD’,’direct’);

2. change the user and group config in /etc/httpd.conf
#User nobody
#Group nogroup
User YourUserName
Group YourGroupName

cron使ってシェルからGETメソッドを実行する方法

シェルから指定の時刻に特定のURLにアクセスするcronジョブを作る時は
以下の方法が取れる。

方法1)シェルからGETメソッドのパラメータ・値を取得
    [シェル側]
     % /usr/local/bin/php test.php val=1
    [PHP側]
     echo $_SERVER[“argv”];

方法2)シェルからwgetコマンドを実行
    [シェル側]
     wget “http://localhost/test.php?val=1”

方法3)phpファイルにパラメータ付きのURLを記載して、
    そのPHPファイルを実行

方法4)シェルからcurlコマンドを実行
    [シェル側]
     curl “http://localhost/test.php?val=1”

※WordPressのメール更新のwp-mail.phpを実行する場合は
 wgetではダメで、curlを使用すればOK。
 wp-mail.phpは更新する時に実行が完了するまで
 画面を開いておかないといけないらしく、wget –spider
 だと実行完了前に閉じてしまう(?)ようだ。

メール投稿(wp-mail.php)の即時反映、カテゴリー変更、文字化けとか

■色々な疑問とか
 1.メール投稿すると「レビュー待ち」となり即時反映されない
  → ユーザー登録時のメールアドレスに列挙がないものは
    即時反映できない。
    「WP管理画面」 – 「設定」 – 「ユーザー」に
    メール投稿を許可したい送信元メールアドレスを登録する。

 2.メール投稿時の「カテゴリー」を自由に変更したい
  → wp-mail.php の変数 $post_category に配列[0]に
    カテゴリーIDを入れればOK。
    ※いまのところ、この方法で特に問題は起きてない。

    自分はwp-mail.phpに下記を記載。この「4」がcat_IDになる。
// $post_category = array(get_option(‘default_email_category’));
$post_category = array(0 => 4);

    ちなみに、デフォルト時に$post_categoryの中身を見たところ↓
    echo var_dump($post_category);
    // デフォが「未分類」のため、
    //  array(1) { [0]=> string(1) “1” }
    // と表示される。

 3.「文字化けされる」という情報について
  → 自分の環境では件名も本文も文字化けされなかったので、
    最新のバージョンだと文字化け対策がされている(?)ようだ。