wordpress

GMOクラウド iClusta+ WPファイルアップロードサイズ変更

GMOクラウドのレンタルサーバiClusta+で、WordPressのファイルアップロードのサイズを2MBから変更しようとしたときにちょっとつまづいたのでメモ。

公式サイトのヘルプには、php.iniを設置することで変更可能と記載があります。

Q. php.iniファイルを独自に設置できますか?
A.設置可能です。 php.iniファイルがお客さま領域に存在する場合は、そちらが優先されます。
php.iniファイルの設定を有効にしたいディレクトリごとに設置してください。

https://help.gmocloud.com/app/answers/detail/a_id/580/kw/php.ini/p/7

ファイルマネージャからphp.iniを編集する

上記のヘルプページに記載どおり、php.iniを編集します。

php.iniの編集は、Plan Managerの中のファイルマネージャから可能です。

php.iniが設置されていない場合は、設置したいディレクトリに移動し、「作成」にある「Text」をクリック。

ファイル名:php.ini
文字コードはutf-8にしました。
本文に以下を記述します。

1行目の

cgi.force_redirect = 0

必ず記述しなければならないとのことです。また、GMOクラウドではアップロードサイズは25Mまでで制限されているようです。

このように記述してphoinfoを見て、変更されていることを確認。
しかし、Wordpressのアップロード画面を確認してみると、「最大アップロードサイズ:2MB」のまま。

なんでだろうと試行錯誤。

色々確認した結果、php.iniを設置した場所がいけなかったようです。
私は当初、ドキュメントルート直下にphp.iniを設置しましたが、wp-adminディレクトリに設置しなければならないとのこと。

よくよくヘルプページを確認すると、

「php.iniファイルの設定を有効にしたいディレクトリごとに設置してください。」

と書いてありました・・・。

ドキュメントルートのphp.iniをwp-adminディレクトリに移動し、再度WordPressにて確認すると、無事変更されていることを確認。

今まで利用していたレンタルサーバではドキュメントルートの直下にphp.iniを設置するとサイト全体に反映されることが多かったので、その要領で設置したのですが、GMOクラウド iclustaではディレクトリごとに設置しなければ有効にならないとのことでした。

「php.ini」ファイルにつきましては、設置先のディレクトリ内でのみ
有効となりますため、ドキュメントルート直下に置かれましても、
配下のディレクトリ内には有効になりません。

WordPressの該当の設定に関するPHPファイルが
「/wp-admin」直下にございますため、同じディレクトリ内に
「php.ini」ファイルも設置していただく必要がございます。

WordPress ショートコードをウィジェットで使う

WordPressのウィジェットでショートコードを使いたい時、カスタムHTML内にショートコードを記述しても、そのまま表示されてしまいます。

ウィジェットでショートコードを使う

テキストウィジェットでもショートコードを使うには以下をfunctions.phpに記述

テンプレートファイル(PHPファイル)でショートコードを使う

テーマを自作している場合など、テンプレートPHPでもショートコードを使いたいと思うことがあります。

その場合は以下のように記述します。

参考:
WordPress Codex 関数リファレンス/do shortcode
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/do_shortcode

 

Advanced Custom Fieldsの値でソートする

タイトルの通り、Wordpressの投稿記事やカスタム投稿タイプの記事をAdvanced custom fieldsで設定した値で並び替えしたいときのメモ。

カスタム投稿タイプ: events
ACFのフィールド名: event_date (日付)

get_postsを使う

WP_Queryを使う

カスタム投稿タイプ: event
ACFのフィールド名: featured(真偽値)

 

Advanced Custom Fieldsのドキュメントに掲載されています。
https://www.advancedcustomfields.com/resources/orde-posts-by-custom-fields/

WordPress ビジュアルリッチエディタが表示されない

しばらくの間、ほったらかしにしていたwordpressをアップデートしてみたら、投稿画面がおかしい。

文字を打っても、入力されているのは確かだけど、表示されない、
ビジュアルエディタも表示されていないことに気づきました。

ビジュアル と テキストの切り替えもできない状態。

ユーザー画面で、「ビジュアルリッチエディターを使用しない」にチェックを入れてみるとテキストは普通に表示されるのでtinymceに原因がありそうです。

このような不具合があると、プラグインが起因していることが多いので、プラグインをすべて停止してみますがが、改善されない・・・。

テーマをデフォルトに戻してみるがそれでも改善しない。。。

Chromeのデベロッパーツールで確認すると

Uncaught ReferenceError: tinymce is not defined…

のようなエラーがでていました。
このエラーで検索してみるとこちらのサイトが

WordPressのビジュアルエディタがChromeでだけエラー
https://naomo.co.jp/2013/07/wordpress%E3%81%AE%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%81%8Cchrome%E3%81%A7%E3%81%A0%E3%81%91%E3%82%A8%E3%83%A9%E3%83%BC/

ChromeだけでエラーがでるということでFirefoxで確認してみると、確かにFirefoxでは正常に表示されていました。
こちらのサイトで書かれている対処法を試してみました。

wp-config.phpに以下を記述

キャッシュをクリアして確認したところ、、、ちゃんと表示されるようになりました!

JavaScriptの連結を無効化するということだそうです。
メディアの追加ボタンが効かなくなったりするときにも有効なソースのようです。

古いネットワークキャッシュを削除する効果があるのかな

ひとまず解決しました^^

WordPressのwp-config.phpで出来る事いろいろ

Contact Form 7 リダイレクトの設定 DOMイベントで

Contact Form 7で送信完了ページにリダイレクトしたり、Googleアナリティクスのトラッキングを取るためにon_sent_okフックを使っているんですが、

on_sent_ok のフックを使用する方法は現在では非推奨になっています。この機能は2017年中に廃止される予定です。

とのこと。

on_sent_okフックを使かわないでDOMイベントで対応するそうです。
詳しくは公式サイトにも書かれていますが、備忘録として残しておきます。

on_sent_ok を DOM イベントに置き換える

送信完了後に別ページにリダイレクトする場合(サンキューページへ遷移する場合など)

http://example.com/sent_okの部分を遷移したいURLにする。

このスクリプトを該当のフォームに挿入する。
これはfunctions.phpで対応。

2行目で、「entryform」というページのみに表示させるよう条件分岐
3行目のecho~以下にスクリプトを挿入。
sent_okというURL(スラッグ)のページへリダイレクト

特定のコンタクトフォームのみに適用したい場合はコンタクトフォームのIDを指定する

上記の場合はコンタクトフォームIDが1515

Googleアナリティクスのトラッキング

イベントカテゴリーが “Contact Form”、イベントアクションが “submit” のイベントとしてトラッキング

※HTMLヘッダーに挿入する場合(このソース未検証)
※ページリダイレクトとGAトラッキング両方やるなら併せてヘッダーに挿入したほうがスマートかも

詳しくは公式サイトより

on_sent_ok は廃止されます
https://contactform7.com/ja/2017/06/07/on-sent-ok-is-deprecated/

DOM イベント
https://contactform7.com/ja/dom-events/

フォーム送信を Google Analytics でトラッキングする
https://contactform7.com/ja/tracking-form-submissions-with-google-analytics/

送信後に異なる URL にリダイレクトさせるには
https://contactform7.com/ja/redirecting-to-another-url-after-submissions/

wordpressを手動でバージョンアップ(アップデート)する

とあるサーバーでなぜか、Wordpressのダッシュボードにバージョンアップのお知らせがでないのです。

WordPress x.x が利用可能です! 今すぐ更新してください。

と普通は表示されますが、そのwordpressは4.xなのに

最新のバージョンをお使いです

と表示されたまま・・・

理由を調べる気力がなかったので、手動でバージョンアップすることに。

 

Codex:WordPress のアップグレード
https://wpdocs.osdn.jp/WordPress_%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89/%E8%A9%B3%E7%B4%B0

まずは、wordpressの最新版をダウンロードしておきます。

ホーム

1.データベースのバックアップ

Mysqlのバックアップを取る(ちゃんとバックアップされているかを確認)

2.ファイルのバックアップ

wordpressのファイルをバックアップ(ちゃんとバックアップされているかを確認)

3.プラグインの停止

起動しているプラグインを全て停止する

4.wordpressの古いファイルを削除

下記以外を削除します。

  • wp-config.php
  • .htaccess(ある場合)
  • wp-contentフォルダ
  • wp-imagesフォルダ(ある場合)

5.最新のwordpressコアファイルをアップロード

  • wp-adminフォルダ
  • wp-includesフォルダ
  • wp-config-sample.php以外のファイル

6.wp-contentフォルダ内の古いファイルを削除

  • languagesフォルダ

7.最新のwp-contentフォルダのファイルをアップロード

最新のwp-content/languagesフォルダをアップロード

8.管理画面wp-adminにアクセス

データベースの更新が必要です。と表示されるので更新ボタンをクリック

9.管理画面にログインできたら、プラグインを有効に。

以上で完了。

※追記

最後に実際の表示を確認してみたら、投稿ページが「ページが見つかりません」に。
慌てず、パーマリンク設定を保存し直しました。
再度確認したら、無事表示されてました。(ほっ)

無事、手動アップデートできました、ファイルを削除するって、バックアップをとっていても緊張します・・・

Contact Form7・Googleアナリティクスでコンバージョン設定

WordPressの問い合わせフォームでは必ずと言っていいほどお世話になっているContact Form7。
GoogleアナリティクスでContact Form7のコンバージョンを計測するための設定を備忘録として残します。

Contact Form7の設定

ContactForm7の管理画面、「その他の設定」に以下の内容を設定します。ContactForm7で、on_sent_okというjavascriptのアクションフックが用意されています。

基本の形は

ラベル、値は省略可。
下記は、資料送付申し込みフォームの場合の設定。

contactform7%e3%82%b3%e3%83%b3%e3%83%8f%e3%82%99%e3%83%bc%e3%82%b7%e3%82%99%e3%83%a7%e3%83%b3%e3%82%bf%e3%82%af%e3%82%99%e8%a8%ad%e5%ae%9a

公式サイト:フォーム送信を Google Analytics でトラッキングする
http://contactform7.com/ja/tracking-form-submissions-with-google-analytics/

Goolgeアナリティクスの設定

Googleアナリティクスで目標の設定をします。
目標を設定するには、「管理」>「ビュー」の中にある「目標」です。
「新しい目標」をクリックし、新規登録します。

1〜3まで目標設定のステップがあります。

1.目標設定

「カスタム」を選択して続行を押します。

%e3%82%a2%e3%83%8a%e3%83%aa%e3%83%86%e3%82%a3%e3%82%af%e3%82%b9

2.目標の説明

名前は、Googleアナリティクス上で表示される目標の名前、任意の名前を入力。
タイプは「イベント」を選択。

%e3%82%a2%e3%83%8a%e3%83%aa%e3%83%86%e3%82%a3%e3%82%af%e3%82%b9%e3%82%a4%e3%83%98%e3%82%99%e3%83%b3%e3%83%88%e8%a8%ad%e5%ae%9a

3.目標の詳細

イベント条件を設定します。内容は、先にContactFomr7で設定した通りに、入力します。

カテゴリ:先頭が一致 Contact Form
アクション:等しい submit
ラベル:等しい 送付申し込み完了
値:完全一致 1

※値の部分は「完全一致」にしましたが、ちょっと怪しい。未確認事項です。

%e3%82%a2%e3%83%8a%e3%83%aa%e3%83%86%e3%82%a3%e3%82%af%e3%82%b9%e3%82%a4%e3%83%98%e3%82%99%e3%83%b3%e3%83%88%e6%9d%a1%e4%bb%b6

これで、設定完了。
計測されるかどうか1〜2日後にGoogleアナリティクスで確認を。

Advanced Custom Fields で画像出力する

WordPressのプラグイン「Advanced Custom Fields」で画像を出力させるときのメモ

Advanced Custom Fieldsの設定側で、画像の「返り値」を何にしたかで、出力方法が異なる

返り値の種類は、画像オブジェクト、画像URL、画像IDの3つ。

画像オブジェクト

画像に関する情報を色々取得できます。

公式サイトの詳細ページ
https://www.advancedcustomfields.com/resources/image/

画像オブジェクトで出力するサンプル

画像URL

画像のURLをそのまま返します。
画像をそのまま出力したいときには一番簡単ですね。

画像ID

文字通り画像のIDを出力します。
IDを使ってサイズなどを指定することもできます。

公式サイトから

ワイド、ハイトを指定する

カテゴリーの画像を設定して出力する

Advanced Custom Fieldsでカテゴリ用のフィールドをしてする場合は、位置のルールを「Taxsonomy Term」に設定しカテゴリを選ぶ。

 

Contact Form 7でajaxzip3を使う為のメモ(コピペ用)

WordPressで問い合わせフォームを作るときは
Contact Form 7
http://contactform7.com/ja/docs/
です。だいたい

Contact Form 7で郵便番号から住所を自動入力するために使うのは

ajaxzip3
https://github.com/ajaxzip3/ajaxzip3.github.io
です。だいたい
同じような機能のプラグインもあります。
zipaddr-jp
https://wordpress.org/plugins/zipaddr-jp/

どちらでもよいと思いますが、個人的な好みでajaxzip3を使っています。簡単に設定できるようにコピペ用としてメモします。

Contact Form 7で住所自動入力できるajaxzip3を使う方法

郵便番号(ワンボックス)+住所の場合(&bootstrap3)

郵便番号の入力が1つのテキストボックスで住所の入力も1つのテキストボックスの場合(Bootstrap3を使ってくくります)

設置イメージcontact-form-7%e3%81%a8ajaxzip3%e3%82%b5%e3%83%b3%e3%83%95%e3%82%9a%e3%83%ab

Contact Form 7での設定

WordPressでの設定(スクリプトの読み込み)

functions.phpにajaxzip3のスクリプトの読み込みを追加する設定

まずajaxzip3を実行する関数用のファイルを作成(useajaxzip3,js)という名前にしました。

ファイルの中身は

wordpressのテーマディレクトリにあるjavascript用のディレクトリに保存。

functions.phpを以下のように編集

 

郵便番号(ワンボックス)+都道府県+住所の場合(&Foundation6)

郵便番号テキストボックスと都道府県+住所の組み合わせの場合
こちらはFoundation を使ってマークアップした場合
http://foundation.zurb.com/

設置イメージ
contact-form-7%e3%81%a8ajaxzip3%e3%82%b5%e3%83%b3%e3%83%95%e3%82%9a%e3%83%ab2

Contact Form 7の設定

WordPress側の設定

これは前述と同様ですが、useajaxzip3.jsの中身は以下のようにします。