WordPressの投稿のエディタ機能でSELECTを使う場合

WordPressの投稿で記事を作成するときにセレクト文を記述したいと思うときがあるかと思います。(何の時ってなにかプルダウンで選択させてたいとき)

 

記述の注意としては

 

テキストモードで編集

セレクトテスト:<select>
<option></option>
</select>

セレクトテスト2:<select></select>

 

↓問題なく下記のように表示された。

 

コードをそのままでエディタをビジュアルモード →テキストモードタブの切り替えを行っていると。。。

セレクトテスト:<select>
<option></option>
</select>

セレクトテスト2:

 

そうすると「select」のコードが消えた。

<option>がある場合は残るみたいだが、optionが無い場合は消えてしまう。

 

標準のエディタでこのようになるので仕様っぽいですね。WordPressは4.9系

 

javascript等でoptionを自動で記述したい場合は気を付けいたい点ですね。

 

 

WordPressで5000人のアカウントをCSVで作成してうだうだしてみる

WordPressで5000アカウントを作成して運用できるのかテストしてみます。

本当は外部の認証でいろいろとやりたいところですが、面倒そうなのでWordPress基本機能を流用してみたいと思います。

会員情報(アカウント)は、基本内容+拡張したいので「WP-Members」プラグインを入れます。

 

※「WP-Members」のインストール類は省略

 

アカウント情報のインポートに「Import users from CSV with meta」プラグインを使ってみたいと思います。

URL:https://ja.wordpress.org/plugins/import-users-from-csv-with-meta/

 

「Import users from CSV with meta」プラグインのインストール手順

「プラグイン」>「新規追加」で「Import users from CSV with meta」を検索してインストール→有効化を行う。

 

「Import users from CSV with meta」プラグインの使い方

1.「ツール」>「Import users from CSV with meta」をクリックする

2.インポートするCSVを用意する

 

↓のようなCSVを作れということ見たい

Username,Email,Password,Address,City,State,Zip code,Country,user_url
john,john@mymail.com,mypassword,Rd. Victoria,Atlanta,Georgia,1201,USA,
javier,javier@micorreo.com,pass,Av. Cervantes,Córdoba,Córdoba,14004,España,http://www.linuxhispano.net
elissa,eliss@mymail.com,elis2013,Verona,Ferrara,Ferrara,89891,Italia,
piere,mon@mon.fr,passwordfrance,Nation,París,Île de la Cité,28280,France,
peter,pet@me.com,passpass,National,Washington,Columbia,2001,USA,
luis,luisperez@correo.es,contrasenna,Sol,Madrid,Madrid,28005,Spain,
eleonora,eleonora@me.it,barele,Spagna,Roma,Roma,10101,Italia,

 

それなので最低限の内容にしてみた。(文字コードはUTF-8で保存)

Username,Email,Password
hoge,hoge@it-trouble.help,mypassword

 

「Import」タブの「ファイルを選択」で先ほどのCSVを選択し「Start importing」ボタンを押す。

 

WP-Membersを利用している場合は

「Activate user when they are being imported?」を「Activate users when they are being imported」に選択する。

 

↓簡単に入った。

 

あとは応用で・・・。

 

「WP-Members」で拡張したフィールドも対応できるか試してみる

 

今回は、所属という項目を「セレクト」で準備した。

WP-Membersで追加したフィールド。ラベル名:所属。メタキー:belongs

<---- 選択してください ---->|,
所属部署1|1,
所属部署2|2,
所属部署3|3

 

というこで早速さっきのCSVにフィールドを追加。所属はあえて「所属部署3」になるようにしてみた。(ちゃんと選択されるかの意味合いで)

Username,Email,Password,belongs
hoge,hoge@it-trouble.help,mypassword,3

 

↓取り込んでみたところちゃんと選択されていた。

 

 

5000アカウントをインポートしてみる。

まあ、Excelでざざーっとコピーしてアカウントを増やしてみた。

 

早速インポート処理….5000になると処理がかかりますな・・無事にインポートされた。

 

次に5000アカウント更新→5000アカウント新規でインポート処理。

→これも無事に終了。あれ日本語が落ちてる。。。

↓のようにしたら、「ほげ」が抜けた。あ、そうそう、username→ユーザ名ね。そーすよね。。

ほげ10000,hoge10000@it-trouble.help,mypassword,3

 

ニックネームや表示名を変更したい場合は

Username,Email,Password,belongs,nickname,display_name
hoge1,hoge1@it-trouble.help,mypassword,3,ほげにっく,ほげ表示

 

nicknameでニックネーム

display_nameで表示名

 

に対応しています。

 

アカウントを一括削除したい

「Import users from CSV with meta」プラグインではできないようです。

 

じゃあ、アカウントをロックしたい

→インポート時に「Activate user when they are being imported?」を「Do not activate users」すれば?結果は、有効アカウントは無効化にならなかった。

(無効化状態→有効化は可能)

アカウント無効?フィールドを追加してCSVでインポートしたが反映されなかった。。。ソースを見ないとダメかな

 

→特段アカウントをロックするようなプラグインがなかった。

ということで「http://jisakupc-technical.info/web-survice/wordpress/4839/」の「User Account Lock out」プラグインを使ってみるか?

 

新たに試してみた。

■アカウント権限を「無し」にする

Username,Email,Password,belongs,nickname,display_name,role
hoge1,hoge1@it-trouble.help,mypassword,3,ほげにっく,ほげ表示,''

上記をインポートして権限を無しにする

 

その後「Bulk Delete」プラグインでアカウントを削除する

Bulk Delete

 

・「Dulk WP」>「Dulk Delete Users」をクリックする

なぜか権限が「NONE」だとうまくいきません。

それなので削除権限グループを作って、削除するようにすると良いと思います。

 

 

うーん、今日はここまでさ。

 

 

【WordPress】ログインしないで投稿できるプラグイン「WP User Frontend」を試してみる

ログインしないで投稿できるプラグイン「WP User Frontend」を試してみます。

 

今回、最終目標としては

・タイトル、本文、画像をカテゴリ毎にフォームを設定する

・課金は行わない→無理かな。必要なものは買わないと。

それでは、初めて期待と思います。

 

■インストール

・「プラグイン」>「新規追加」で「WP User Frontend」を検索します。

・表示名は「WP User Frontend – Membership, Profile, Registration & Post Submission Plugin for WordPress」となりますのでこちらを「今すぐインストール」でインストールします。

 

・プラグインを「有効化」します。

・ウィザードが表示されますので「Let’s Go!」をクリックします。

 

・今回「有料課金」は行わないので「Enable Payments」のチェックを外しました。

 

・設定画面に移動しました。

 

■投稿フォームの作り方

・「User Frontend」>「Post Forms」をクリックします。

・サンプルがあるので開いてみます

 

・下記の画面が基本画面となるようです。

 

これを見ると「タイトル」「画像」「本文」が用意されています。

 

それなのでそのままサンプルを動かしてみます。「preview」ボタンをクリックします。

 

先ほどの内容のフォーム表示されます。

※Insert Photoは本文に写真を入れるためのボタンでした。

そのまま記事になりました。

 

管理画面から見てみると普通の投稿と同じにようになっています。「WPUF Form」でSample Formが指定されていました。

 

■フォームの設定

PostFromsの「Settings」タブを開くと多々設定があります。

post type post or page

投稿か固定ページ

Post Status 投稿後のステータス
Default Post Category 投稿後にどのカテゴリに属するか
Rdirect To 投稿後にどこにジャンプするか
Comment Status コメント枠
Submit Post Button text 投稿ボタン名
Post Draft 投稿の下書き許可?
Form  Template

 

■下記の条件でフォームを作ってみる1

※ゲストからの投稿で指定したカテゴリだけにPOSTして、レビュー待ちで止めたい。投稿ページはWordPressの基本機能のパスワードで保護したい。(固定ページにフォームのショートコードを入れてパスワード設定する)

 

・Post Settings

Post type :post(投稿)

PostStatus:レビュー待ち

Default Post Category:サブカテゴリ(サブカテゴリ1-2)

Redirect To: To a Page(投稿フォームページ)

 

・Submission Restriction

Guest Post: Enable Guest Post

※投稿時にユーザー名、Eメールは不要とした

 

投稿フォームはタイトル、本文の他に「Featured Image」を用意した

※本文に画像を入れるボタンは「Post Body」の「Advanced Options」の中の「Enable image upload in post area」にチェックを入れる

これで投稿したところ下記のようになった。

 

「Featured Image」は、アイキャッチに入るようだ

 

※メール通知は最初から有効となっております。

 

■メタスライダー(metaslider)と合わせ技を試してみる

metaslider Proだと投稿のカテゴリを指定して自動スライドができるのだが問題なく動作するのかチェックする

「Featured Image」の「Advanced Options」の「Max. file size」ファイルサイズは初期値は小さいので適度なファイルサイズにを変えておく。

metaslider でpost feedで指定したカテゴリでスライド表示は特に問題なかった。

 

 

■カスタムフィールドを組み合わせられるのか

「Advanced Custom Fields」と組み合わせて投稿できるのか。Advanced Custom Fieldsプラグインをインストールしてカスタムフィールドを準備しておきます。

カスタムフィールドを使う場合は、項目の「Meta Key」をカスタムフィールド名にしてあげばそのまま入る。

 

■同意を押したのちにフォームを表示するはできるのか?

うーむ、方法がなさそうなのでスクリプトでフォーム非表示→同意ボタン押したら表示って簡易的な感じではどうかと・・・

 

プラグイン:Custom CSS and JS

Custom CSS and JSでスクリプトを作成します。

フォームに対してhide(display noneで消してみました)

jQuery(function(){
	jQuery('.wpuf-form-add').hide();
});

 

・functoin.phpで「Custom CSS and JS」を読み込ませます。

/**
 * JavaScriptを追加
 */
function custom_scripts() {
	// スクリプト追加
	wp_enqueue_script( 'custom-script', 'Custom CSS and JSプラグインで作成したJSファイル名' );
}
add_action( 'wp_enqueue_scripts', 'custom_scripts' );

 

あとは、「同意する」ボタンを作成してクリックしたら、フォームを表示させれば、とりあえず完成です

ちらって見えてしまうのが嫌な場合は、フォームのショートコードをdisplay:noneで消してってことをすればよいかな

 

 

組み合わせることにより幅広がるプラグインですね。

 

フォームを呼び出されるときにフックする場合

「wpuf_add_post_form_top」でhookするとフォーム呼び出し時にキックされる。

フォーム毎に何か追加する場合はこれを使ってもよいかも。

function wpuf_add_custom_fields( $form_id, $form_settings ) {
	var_dump($form_id);
	exit();
		
}
add_action( 'wpuf_add_post_form_top', 'wpuf_add_custom_fields', 10, 2 );

※編集時は「wpuf_edit_post_form_top」でhookできる

 

例えば、フォームID毎に追加処理を足したい場合

えーと、こっそりと追加情報を一緒に保存するとかなどなど…

 

新規投稿or更新する前にというhookが見つからなかったのでafterのフックで、カスタムフィールドの「_wpuf_form_id」を取得することによりフォームIDを取得することが可能

function wpuf_update_ummeta( $post_id) {
	
	$form_id = get_post_meta( $post_id ,'_wpuf_form_id',true);
	var_dump($form_id);
	exit();
	
}
add_action('wpuf_add_post_after_insert', 'wpuf_update_ummeta' );
add_action('wpuf_edit_post_after_update', 'wpuf_update_ummeta' );

 

アイキャッチを取得したい場合はpost_metaの値で「_thumbnail_id」を参照すればIDが取得できる

 

Ultimate Memberのアクセス制限を利用したい

WP  USER FRONTENDプラグインでも記事ページのホームページへのアクセス制限をすることができますが、「Ultimate Member」の機能のホームページへのアクセス制限したい場合はちょっと一工夫が必要です。

 

管理者画面でアクセス制限はこちらから設定できますが、

フロントで投稿した場合にはアクセス制限のフックがかかりません。

 

それなので一つ上の「wpuf_add_post_after_insert」「wpuf_edit_post_after_update」に対してのフックを利用します。

UM Content Restrictionに対して

Restrict access to this content?:チェックあり

誰がこのコンテンツにアクセスできますか ?:Logged in Users

とし、権限にチェックを入れる場合は下記のようにする

 

_um_access_rolesでアクセスを許可する権限名で指定する

$um=array();
$um["_um_custom_access_settings"] ="1";
$um["_um_accessible"] ="2";
$um["_um_noaccess_action"]="0";
$um["_um_access_roles"] = array(
	"権限ロール名1" => true,
        "権限ロール名2" => true,
);
$um["_um_restrict_by_custom_message"]="0";
$um["_um_restrict_custom_message"]="";
$um["_um_access_redirect"]="0";
$um["_um_access_redirect_url"]="";
$um["_um_access_hide_from_queries"]="0";

update_post_meta( 記事ID , 'um_content_restriction', $um );

 

もっと詳しく知りたい方はDBのPOSTMETAの「meta_key:um_content_restriction」の内容がどのように変わるか調べてみてください。

 

プロファイルフォームをカスタマイズしたい

「Registration Forms」でフォームを作成すれば設定で選択できるようになる

 

メール通知をカスタマイズしたい

「WP User Frontend」内に通知機能があるがこれでは不足という場合は、「Post Status Notifier Lite」を使ってもよいかと。有料版だとメールテンプレートが利用できる。基本的には有料版を使う前提かと思う。

Post Status Notifier Lite

 

よいのだが、添付ファイルができないみたいだ。それで表示悩んだ。結果function.phpでwp_mail関数で自分で送信してしまうのも一つの手ではないかと気づいた。

 

<?php wp_mail( $to, $subject, $message, $headers, $attachments ); ?>

※添付ファイルのときはheadersでfromを指定したほうが正常に送信できそうだ。CCはheadersで指定する。

まあ、それなりに動作するが、カスタムフィールドを動的に表示・非常時しているときはコードが残ってしまう。

IFなどの分岐を使えるようだが、今のところうまく動作しない。英語のみなのか?

 

投稿画面での画像挿入サイズを変更したい

「フロント投稿」>「挿入する画像の最大サイズ」を自分好みのサイズにする

 

カスタムタクスソノミーは項目追加できるのに、メール送信機能では送れない

サポートに問い合わせてもまともに回答がこない。カスタムタクソノミーはフォームに設定できるが、メール本文には利用できない。

カスタムタクソノミーをメール通知に含めたければメール通知部分を自作せよ!!

 

記事本文のアップロードできる画像ファイルサイズは2MB

記事本文は2MBだそうです。

「wp-user-frontend/assets/js/frontend-form.min.js」で2MBに設定している。これを変更した場合は、プラグインがアップデートされるたんびに問題ありです。

もしこの方法ならば既存(プラグインの)ファイルを「wp_deregister_script」で解除してから再度読み込み直しかな。。。

 

function register_wp_user_frontend() {
    wp_deregister_script('wpuf-form');

    wp_register_script( 'wpuf-form', get_template_directory_uri() . '/assets/js/wp-user-frontend/frontend-form.min.js', array( 'jquery' ) );
}
add_action('wp_enqueue_scripts', 'register_wp_user_frontend');

 

 

ファイルサイズを大きくするならばphp.iniの下記の項目も調整が必要なことは言うまでもない

post_max_size POST データの最大サイズ
upload_max_filesize アップロードできるファイルの最大サイズ
memory_limit スクリプトが利用可能できるメモリの最大容量
max_input_time スクリプトが POST、GET などの入力をパースする最大時間(秒)
max_execution_time スクリプトの最大実行時間(秒)

 

投稿本文のTINYMCEの高さが短いので長くしたい

tinymceのfilterで調整が可能。管理画面では適用しないのでis_adminでWordPressの管理画面を除外

add_filter('tiny_mce_before_init',function($settings){
    if(!is_admin())
    {
        $settings['height'] = '500px';
    }
    return $settings;
});

 

カスタムフィールドやタームのドロップダウンテキストを非表示にした場合の編集

実は選択させたいがいろいろあって、非表示にしたい。でもシステム上は必要なとき…

投稿だけでなく編集機能もあるwp userfrontendですが、編集時にドロップダウンを非常にしていると値が消えて保存されました。

っていうことで下記のようにしたところ、ドロップダウンも保存された

選択項目を表示:はい

公開状態:非表示にする

 

カテゴリで親と子にチェックを入れたい場合は、複数選択できる選択方式が必要

カテゴリをドロップダウン式の選択にした場合、値は1個となります。それなので親と子のカテゴリにチェックを入れたい場合は向いていません。

子だけなら問題ないのですが、複数の値となるので、そうなると編集時に呼び出したときに親カテゴリだけが選択されてしまいます。

両方を維持したいのであれば複数チェックできるもので対応する必要があります。

 

 

下書き保存した記事の内容をプレビューしたい!

そうですね、post→ajaxの戻り値を見ているとできそうな気がします。

「wp-user-frontend/assets/js/frontend-form.min.js」で306行目付近の「draftPost: function (e) {」の中にそのあたりのことがかかれています。

下書きを保存したときに「post save」っていう部分が日本語にならないなって思ったらこのあたりにそのまま書かれてました。

戻り値に「url」がありそれがプレビューのURLとなっている。あとは、下書きのボタンの後あたりにプレビューを配置する

EDITの場合は、パーマリンクで取得したIDにプレビューフラグを付ければリンクの完成

 

カレンダーが英語のまま

日本語化したい!え?そんなことはできないってよ。

じゃあ、wp_headにdatepickerを追加で記述してしまおう。詳しくはこちらで

 

 

記事に画像を挿入するときに初期値を左寄せにしたい

WordPress管理画面では、「image_default_align」で「left」に値をセットすれば、記事に画像を挿入したときに何も考えずに左寄せになります。

フロント画面で投稿するwp userfront endでは、その値は無効みたいなのでちょっと困りました。

 

「frontend-form.js」で画像アップロード処理の部分を書き換えてみました。

imageUploader.bind('FileUploaded', function(up, file, response) {


~ 略 ~

                            // tinyMCE 4.x
                            var mce = tinyMCE.get( 'post_content_' + form_id );

                            if ( mce !== null ) {
                                var res_iamge = $(response.response).addClass("alignleft");

                                var html = $('<div>').append(res_iamge.clone(true)).html();

                                mce.insertContent(html);

 

とりあえず、画像をアップロードしたときにIMGタグが返ってくるのでそこで、「alignleft」クラスを追加してみましたww

結局、調べてみましたが、最終的にパワープレー修正で落ち着きました。

 

WPUP Formのカスタムフィールドキーが知りたい

「_wpuf_form_id」でいける。

 

ショートコードを使う

「Shortcode」の項目を追加すればよいのだが、なぜかラベルの設定が無い。そしてラベルは「Shortcode」と表示される。

wp_postsの中に格納されているデータを強制的に直してしまえ!って思っただがNGだった。

それなので、jQueryでフォームを読み込み完了時点でラベル名を強制的に上書きするようした。

⇒サポートに問い合わせてみたが、英語を日本語に訳すと..

デフォルトでは、フォームに特定の何かを表示するために使用できるショートコードを管理者が挿入するためのフィールドがあります。 ラベルは、ショートコードフィールドの該当する部分ではありません。 したがって、WPUFからそのラベルを提供することはできません。

え?設定できないってこと?

↓ショートコードの設定は下記のURLを参照

https://weformspro.com/docs/form-field-types/shortcode/#a_aid=weDevs&amp;a_bid=179e9c0a

 

あとで考えたんだけど「Action Hook」が指定できるのでhookでよかったのかも。

 

公開日設定ができない

できないようです。できないです。いやそれじゃ困るよ。うむ。保存時にフックだな。

動作を見てみると、下書き保存時に日付が更新されている。更新の場合は、日付は変更されない。それなので、公開⇒下書き⇒公開とした場合は、最後の下書きの日付が公開日となる。ややこしいな。

日付けは、編集ページを読み込み時に自動的に更新されているようだ。

公開したときだけ、調整するようにしたので「wpuf_add_post_after_insert」「wpuf_edit_post_after_update」のフックで対応

 

ファイルアップロードしていないのにアップロード表示になる(ver 3.3.1)

ややこしいですね。

動作としては、ACFでカスタムフィールドのファイルを作り、管理画面から記事を保存します。

その後、WP USER FRONTENDで編集しようとするとファイルをアップロードしていないのにファイルの表示がされてしまいます。

 

データを追っていくとPOSTMETAに項目がNULLでも追加される。

WP USER FRONTENDで指定された項目がPOSTMETAに存在するというだけでそうするとファイルがあるように表示される仕組みのようだ。これだとちと気持ち悪い。

調べてみたところ下記のファイルの1か所を修正すればOK

・includes/fields/class-field-file.phpの71行目あたり

 

                                foreach ($uploaded_items as $attach_id) {
                                        echo WPUF_Upload::attach_html($attach_id, $field_settings['name']);

 

まあ、attach_idがあるかどかの判定を足せばよい。

                                foreach ($uploaded_items as $attach_id) {
                                    if($attach_id) {
                                        echo WPUF_Upload::attach_html($attach_id, $field_settings['name']);
                                    }

 

アップデートしてくれるのを待つ。サポートに連絡し何度もやり取りしたけど結局かみ合わない。あー、英語力あればな…

 

画像、ファイルをアップロードすると登録できなくなったぉ

調べていくと「reCAPTCHA」を有効にしていたのだが、これが邪魔していた。

 

フロントで投稿後に日時指定で予約投稿にしようと思ったらエラーで処理登録できなかった件

以下のフック後に予約投稿になるようにステータスを変更して「wp_update_post」したら、エラーで終わった。試したものがちょっとバージョンが古いのかもしれない。

プラグインをバージョンアップすると多方面を修正しないといけないのでupdateの方式を変更してみた。

エラーファイル:wp-user-frontend-pro\admin\coupon.php

add_action('wpuf_add_post_after_insert', 'wpuf_new');
add_action('wpuf_edit_post_after_update', 'wpuf_up' );

 

エラーで失敗したバージョン:

問題箇所は「’edit_date’=>true」があるとwp user frontendプラグインのsave_postのフックにヒットして、エラーとなる。

フォーム作るときに日付の設定に「Set this as publish time input」とあったが、これにチェック入れても同様にエラー。

$publish_date = date( 'Y-m-d H:i:s', strtotime( '+ 7 days' ) );
$my = array(
      'ID' =>$post_id,
      'post_status'   => 'future',
      'post_date'     => $publish_date,
      'post_date_gmt' => get_gmt_from_date($publish_date),
      'edit_date'=>true,
);

$id = wp_update_post( $my );

「Advanced Schedule Posts」のプラグインのバージョンが古かったため発生したようです。

 

ということでクエリで処理してしまおう!

            $publish_date = date( 'Y-m-d H:i:s', strtotime( '+ 7 days' ) );
            global $wpdb;
            $result = $wpdb->update(
                    $wpdb->posts,
                    array(
                        'post_status'   => 'future',
                        'post_date'     => $publish_date,
                        'post_date_gmt' => get_gmt_from_date($publish_date),
                    ),
                    array( 'ID' => $post_id ),
                    array(
                        '%s',
                        '%s',
                        '%s',
                    ),
                    array( '%d' )
            );

 

まあ、あとwp-cronに登録が必要か・・・

 

 

WordPressのバックアップ、リストア、ドメイン名変更が簡単すぎてビックリ!

WordPressでバックアップやリストア、ドメイン名変更をコツコツとやっていました。

 

えーと、HTML系のバックアップ、DBのバックアップ→新しいところにリストア。

 

ドメインを変更するなら「Search-Replace-DB-master」を使って変更・・・

 

たまには新しいツールを!ということで「All-in-One WP Migration」を試してみた。

All-in-One WP Migration

All-in-One WP Migration

 

インストールは、WordPressの管理画面からプラグインで新規追加するだけ!

 

バックアップ方法は、メニューに「All-in-One WP Migration」が追加されるので「エクスポート」をクリックする

エクスポート先をクリックして「ファイル」を選択。その他は有料なので。

 

■バックアップ

バックアップが開始される。しばらく終わるまでお待ち!!

 

バックアップの出来上がり!!DOWNLOADの箇所をクリックしよう!

※動いてうざいかんじだけど。。。

 

 

■リストア

・レンサバのクイックインストールでもなんでもよいのでWordPressをインストールする。

 

・「All-in-One WP Migration」プラグインをインストールする

 

・インポートのメニューをクリックする

・インポート元でファイルを選択して、「バックアップ」で取得したファイルを選択する。

 

しばらくすると完了!!!

 

ログイン等は、バックアップ元のWordPressのログイン情報を利用すればOK.

 

さいごに「パーマリンクは、更新をわすれずに!!

 

でバックアップとリストアが終了です。

 

えー、だれでも簡単にできそうです。これで仕事が一つ減りそうです(ノД`)・゜・。

 

あ、そうそうアップロードできるファイルサイズは

php.iniの下記のあたりは調整してね。

post_max_size 
upload_max_filesize

 

 

2019/8/14追記

・DROPBOXやFTPエクステンションはバックアップ取得時に非常に便利

・アンリミテッドは、サイズが大きいものをリストアするときに必要。

 

リストア時のメモ

小さいサイズ(500MB以下)はどうってことないのですが、ファイルサイズが大きくなると

FTPやDROPBOXから復元したほうが確実に復元できました。

 

FTP経由でのリストア時に、進行度がいったり来たりすることが多々あり、数時間も経過しても進まない場合は

プラグインディレクトリの「all-in-one-wp-migration」>「storage」に復元データを保存している複数のフォルダが無いかどうか確認。

→あれば、復元を停止して、プラグインを削除→再インストールで再実行したほうがよいかと思われる。

 

あとは、必ずプラグイン、エクステンションは最新状態にしてからインポートを開始すること。

 

FTPで復元がなかなか進まない場合は、DROPBOX経由でやるとよいかと思われる。

 

XSERVERでFTP経由で復元しようとしたところ、今一つ進行が良くない。DROPBOX経由でのリストアは成功した。

 

PHPバージョン違いのリストアについて

試した中だと、バックアップ時と同じバージョンでリストアするのがベスト。

PHPバージョンが違うと進まなかったり、エラーだったり…

 

 

WordPressでは、記事と固定ページのパーマリンクが同じだったらどっちが優先される???

ふと、多種多様な業種のお客様のホームページ制作しているといろいろな事象に悩まされることがあります。

今回もその一つをピックアップしたいと思います。

 

「記事と固定ページのパーマリンクが同じだった場合」

まあ、レアケースだと思いますけどそんなことも世の中には発生します。

それでは実験を。

 

(1)投稿ページに作成

投稿

 

(2)固定ページ作成

固定

 

 

これでパーマリンク同じページを作成しました。

 

実際にブラウザでアクセスすると・・・。

結果

 

結果は、固定ページ!!

 

そうです。WordPressで同じパーマリンクがあった場合は固定ページが優先されるようです。

 

ちなみに現象が発生したときにお客様からの問い合わせとしては、ページを更新したんだけど、一切変更が反映されないんですけどーっと言われると思います。

正直、管理画面に入って状況を確認しないとこのような状況が発生しているとはわかりません。また、そうそうこのような気づかないですね。

 

きっとそのうち、固定ページ投稿関係なくパーマリンクがユニークであることをチェックするような機能がWordPressに搭載されるとよいですね。

 

WordPress本体を任意のバージョンにアップデートする方法

WordPressのバージョンアップで手動で任意のバージョンに行いたい時があったのでその時のメモを残します。

 

WordPress本体を任意のバージョンにアップデートする方法

(1)現在のDB,PGの両方のバックアップを行うこと。

※バックアップは重要です。必ず、DBとHTML部分の両方を行いましょう。

 

(2)下記のURLからバージョンアップするWordPressのバージョンをダウンロードする

https://ja.wordpress.org/releases/#older

 

(3)WordPressのファイルを解凍する。

 

(4)FTPでWordPressの「wp-content」のフォルダと「wp-config.php」以外を上書きでアップロードします。

 

(5)「wp-content」のフォルダの内の「languages」のみ上書きでアップロードします。

 

(6)アップデートを行います。下記のURLにアクセスして、指示に従います。

http://実施サイトのURL/wp-admin/update-core.php

 

(7)あとは、表示、新規、編集、スライド等動作しているのかを確認します。

 

こんなところで手動でのWordPressのアップデートは完了です。

※プラグインが動かないケースがあるので気を付けましょう。

 

 

 

 

 

WordPressのバージョンをDBで確認する方法

WordPressが正常に動いているときは管理画面からバージョンを確認することができますが今回はDBだけでバージョンを確認する方法です。

 

WordPressのバージョンをDBから確認する手順

(1)MYSQLの管理画面にログインを行います。「wp_options」テーブルの「option_name」が「db_version」を探します。

「option_value」の値の数字をメモします。

 

(2)その数値を下記の表で確認します。

WordPressバージョン option_value
Version4.8 38590
Version4.7 38590
Version4.6 37965
Version4.5 36686
Version4.4 35700
Version4.3 33055
Version4.2 31532
Version4.1
Version4.0 29630
Version3.9 27916
Version3.8 26691
Version3.7 25824
Version3.6 24448
Version3.5 22441
Version3.4 20596
Version3.3 19470
Version3.2 18226
Version3.1 17056
Version3.0 15260
Version2.9 12329
Version2.8 11548

 

詳細はこちらのサイトでバージョンを確認してください。

WordPress4.8→4.9系へバージョンアップでプラグインが動作しない

今回のWordPress4.8→4.9系へのバージョンアップは、メジャーバージョンアップで久々に動かないものが出てくるようです。

さて、どうするか・・・。

この際なのでちょっと調べてみました。

wp-config.phpに下記を記述することにより自動アップデートを調整することが可能

//マイナー、開発版を含むすべてのコアをアップデート
define( ‘WP_AUTO_UPDATE_CORE’, true );
 
//すべてのコアのアップデートを無効
define( ‘WP_AUTO_UPDATE_CORE’, false );

//マイナーアップデートのみを対象(デフォルト)
define( ‘WP_AUTO_UPDATE_CORE’, ‘minor’ );

 

 

どっちかというと人の操作でのアップデートも制御したい!ですね・・・

といっても制限できるのが更新通知を非表示ぐらいですかね。

function.phpに追記

//更新を非通知にする
add_filter('pre_site_transient_update_core', create_function('$a', "return  null;"));

 

ちょっとバージョンアップに気を付けたいところです。

 

WordPressのリビジョンを操作する方法

WordPressで記事編集ページを開いている場合に重いと感じたことありませんか?

そんなときは、WordPressのリビジョンが多くなってきて重い場合もあります。

 

リビジョンを停止するのは、利便性が悪くなるのでしたくないのですが3回程度に回数に絞り込むのも手です。

wp-config.phpに下記を追加してリビジョンを3回に制限します。

define('WP_POST_REVISIONS', 3);

 

ついでにリビジョンを停止する場合は

wp-config.phpに下記を追加します。

define('WP_POST_REVISIONS', false);

 

 

リビジョンをコントロールするならWordPressのプラグインを使ったほうが楽かも

Revision Control

 

目的としては、レンタルサーバーによっては利用できるメモリが異なり、プラグインが動かないものがあり

その時にエラーログにPHPのメモリオーバーというメッセージが表示されていたことを改善するために試してみました。

関連記事はWebArenaのPHP設定

 

WordPressのページを編集していて初期状態ではOK、何度も編集を重ねるとPHPのメモリオーバーエラーでページが開かなくなるという現象が出ていたので、リビジョンを読み込む量を減らしました。今のところ具合はOKです。

 

 

WebArena「SuiteX」でWordPress動作させようとしたらPHPの「Out of memory 」でつまずいた

今やWordPress動かすためにこんなに苦労するとは・・・。えーと、PHPのバージョンは5.1!!!だったので下記のように記述してCGIタイプのPHPで5.3を動作させた。

AddHandler application/x-httpd-php53 .php

 

とりあえずWordPressはこれで動いたけど・・・

 

プラグインによっては下記のエラーが発生して動かない。

PHP Fatal error:  Out of memory

 

WebAreaサイト上で、PHP5.3のCGIだと、「.user.ini」でphp.iniの個別ができるそうだが詳細が見当たらない。

 

「.user.ini」は、他のドキュメントを参照したところ、PHPの実行の先頭ルートフォルダにあれば、よいとのこと。

・「.user.ini」

post_max_size = 20M
upload_max_filesize = 20M
memory_limit = 256M

 

設定した値が反映されているのかはphpinfoを使って確認する

<?php
phpinfo();
?>

 

これだけでは何ともなので・・・

wp-config.phpにメモリ制限を追加

define('WP_MEMORY_LIMIT', '96M');
define('WP_MAX_MEMORY_LIMIT', '256M');

 

うーん、それでも「Out of memory」が発生するプラグインがある・・・。CPIでは問題ないんだけど・・・。

結局プラグインのバージョンを下げたりメモリ調整したり、1ページあたりのメモリ容量に気を付けたりした。

PHP5.1ベースだと最近のWordPressのプラグインを動作させることは厳しいと思ったほうが良いかな。