simple post order wordpress plugin で並び順が変わらなくなった

カスタム投稿の並び順を手動で変更するために「simple post order 」プラグインを利用していた。

いつかしら、並びを変えることができなくなった。

 

■作業の経過を追ってみた

1.記事をWP All Importでインポート

2.simple post orderで並び替え

3.記事をWP All Importでインポートで更新

4.WP-PostViewsを入れた

5.Disable Commentsを入れた

6.simple post orderで並び替えがで動作しない(現在ここ)

 

■動作するようになった方法

「simple post order」の並び順をリセットした

 

■原因として考えるに…

WP ALL Importで何度か記事を更新したことに原因が???

 

っていう推測な領域。

 

とりあえず、リセットしたら治ったのでもう一度設定。

 

Excelで住所から郵便番号を変換する方法

Excelで住所から郵便番号を変換する方法を教えてほしい相談があったので調べた見た内容をまとめたみました。

 

■動作環境

Windows10

Excel2019

 

■設定方法

1.下記のサイトからダウンロードします。

excelzipcode.7japan

 

2.圧縮ファイルを解凍します。

3.解凍したファイルの「excelzipcode7japan\releases\0」のディレクトリに移動します。

 

4.「01900f62-c4f4-4e49-9d06-5fe74334ee80」→「zipcode7.xla」にファイル名を変更します

 

5.Excelを起動します。

 

6.「ファイル」>「オプション」をクリックします。

 

7.「アドイン」>下の方の「管理:Excelアドイン」の設定をクリックします。

 

8.「参照」をクリックします。

 

9.参照で開いたところに「4」の「zipcode7.xla」をコピペします。

 

10.有効なアドインで「郵便番号変換ウィザード」にチェックを入れ、「OK」をクリックします。

 

11.Excelを終了し、再度起動します。

 

12.「アドイン」のタブが表示されていることを確認します。

 

13.アドインタブにウィザードが追加され、そこから郵便番号変換ウィザードが利用できるようになります。

 

あとは、試してみてください。

WordPressのJetPackでcURL error 60: SSL certificate problemで承認できない件

WordPressのJetPackプラグインを入れ、連携承認しようとしたところ「cURL error 60: SSL certificate problem」で承認できない。

 

っちょっと調べてみたところ

 

原因は

SSL証明書にあるみたい

 

っていうことがわかった。

 

SSL SERVER TESTで証明書をチェックしてみたところ…

 

中間証明書のところで「USERTrust RSA Certification Authority」が「 期限切れ」ってなっていた。

 

証明書発行元に確認したところ変更があったらしく、中間証明書を新しくダウンロードして導入してくださいということなので

早速行ったところ無事jetpackの承認ができ、動作できるようになりました。

 

もうちっとエラーメッセージほしいところだよな。

 

 

 

カスタム投稿(ACF)のWP REST APIで更新する方法

WordPressのカスタム投稿プラグイン(Advanced Custom Fields:略ACF)を利用したサイトを構築したときにWP REST APIで値を更新する方法をメモしておきます。

 

■必要なもの

・ACF to REST APIプラグイン(https://ja.wordpress.org/plugins/acf-to-rest-api/

※ACFはインストール済みとします。あと、WP REST APIの認証部分も省略します。

 

■設定すること

function.phpに下記の2行を入れてREST APIの時の設定を表示させます。

	// Enable the option show in rest
	add_filter( 'acf/rest_api/field_settings/show_in_rest', '__return_true' );

	// Enable the option edit in rest
	add_filter( 'acf/rest_api/field_settings/edit_in_rest', '__return_true' );

 

そうするとカスタムフィールド設定に下記の2つの設定ボタンを表示されます。見ての通りなので、両方とも「はい」にします。

 

■どうやって値を入れるのか?

まず、このページを読まないと進みません。

 

エンドポイントとして

投稿の場合は下記のようなものが用意されています。

/wp-json/acf/v3/posts/{id}
/wp-json/acf/v3/posts/{id}/{field-name}

 

更新するにあたっては「fields[‘カスタムフィールドで指定した名前’]」にすれば更新できます。

え?更新?更新しかないようで、新規に値を入れることはできないようです。

 

API流れとして、

・ページ(記事)を作成する

・カスタムフィールドの値を更新する

となります。

 

じゃあ、リピートフィールドは?ACFの中で便利な機能です。

 

下記のような形で更新できます。

                    "fields[repeattext]":[
                        {
                            "itemname":"1234",
                        },
                        {
                            "itemname":"あいうえお",
                        }
                    ],

 

えーそうなんですよ、更新なので記述が無いものは削除されます。

 

なんか履歴を追加していきたい!!って思った場合は全件取得して全件ぶっこむようになるのでしょう。。。

 

 

今回は、商品に対して、価格の履歴をACFのリピートフィールドで入れたいなって思っていたのでどうしようかな…

 

 

2021/12/29追記

□ACFの値を登録する方法

公式サイトの記事(https://www.advancedcustomfields.com/resources/wp-rest-api-integration/)によると「Advanced Custom Fields Pro」のversion5.11以降ならこのプラグインだけで値の登録等ができるとのこと。

 

さっそくやってみた。「ACF toREST API」は無効化。代わりに「Advanced Custom Fields Pro」を有効化。

 

今回やりたかったのがユーザーにカスタムフィールドを追加してそこに値を入れたかったのでそのようなものを作ってみた

カスタムフィールドを作り、設定欄のアクティブとShow in REST APIをはいにする

 

「Show in REST API」を「はい」にしないとその項目は登録できないみたいなので注意が必要。

 

項目の指定方法は

"acf": {
	"bikou": "テスト",
}

ACFの配下にフィールド名と値を記述する

 

これでAPIで項目の格納が可能になった。

 

 

コロナでテレワークの影響!?でPV数が減少している件

コロナで2020年4月から自粛やテレワークが加速していると思います。

その影響なのか、このサイトのPV数が落ちました。なんせ、コンピューター系の内容しかホームページ掲載していないので・・・。

 

えーと、読まれるためにうりゃりゃって書いていなかったのでマニアックなメモ的なものでサイト構成していたのでそんなもんですが・・・

グラフで見るとちょっと悲しいです。

テレワークになるとコンピューター系は調べなくなるんですね。たぶん、作業時間が減るのか、仕事している風な人がみていたのか、それもとピンポイントの仕事やってさっさと別のことをするのか…わかりませんが。。。

 

 

数値かされるとすごく突き付けられます。

 

なんせ、ハンドジェルの記事の方が最近ではすごく読まれているので。😢

 

っていうことで、やってらんねーって感じで食い散らかした、うさぎさんからのコメントです。

 

 

 

ぐーたらな、おっさんになってきた黒うさぎさん!!

 

ホームページの表示速度を早くしたい!

ホームページの表示速度を早くしたい!っていう相談が多々きますのでちょっとざっくりとホームページの表示速度ってなんなのかまとめていきたいと思います。

 

 

ホームページの表示測度にかかわる要因

 

・サーバーの性能

・コンテンツのデータ転送量

 

が主な要因になります。

 

サーバーの性能とは(っていうより処理能力?)

基本的にはハードウェア回りのCPU、メモリ、HDD or SSD、ネットワーク回線が主に影響します。

最近のパソコン選びと同じでCPUはそこそこ、メモリは8GB以上、SSDは必須、バックボーンのネットワークは高速が良いです。

 

さらに、サーバーの性能に含まれてしまう?ケースが多いのが

・WEBサーバーの種類(Apacheやnginx)。現状は、一般的にはngixの方が速いです。

・WordPressを利用しているとPHP5とPHP7の違い

あたりが一般的ななのかもしれません。

 

これ以外にも単なるOSの環境が単なるLAMP環境よりも高速にチューニングされたkusanagiを利用したほうが断然速いです。

 

ここでいう速いは、Apache BENCHを利用した結果に影響する部分になります。

 

コンテンツのデータ転送量

この部分がちょっと厄介ですね。日々更新してデータが増えていくので絶対というのは無いですが工夫しないといけないです。

・画像サイズ調整、圧縮

・ScriptやCSS系の圧縮の利用

 

このあたりは、「Google PageSpeed Insights」や「GTmetrix」でチェックしていけばよいかと思います。そうすると対処する箇所を指摘してくれるので。

 

これらを総合してのホームページ表示測度となります。

 

例えば1秒台でホームページを表示したい!って思たら、「サーバーだけ強化すればよい」っていうことはありません。

サーバーとコンテンツの両方を調整して、1秒台になります。また、サーバーに関しては同時アクセスや月間PVがどのくらいなのかによってもスペック調整が必要です。

 

ちょっと、空いていたサーバーにkusanagiをインストールして速度を図ってみました。

VPSサーバー:メモリ2GB、CPU3コア

GTmetrixだとページ表示までに1.5秒とのこと。まあ、スペックからしてまあよいではないかと思います。(WordPressの初期テンプレ)

 

じゃあ、サーバーとしての処理能力をは?

apache BENCHで

ab -n 1000 -c 100 http://対象ドメイン/

とした場合

・1秒で処理できるリクエスト

Requests per second: 113.53 [#/sec] (mean) PHP7

1秒なので1か月を秒数(2,592,000秒)に直して計算すると 292,896,000 PV/月。

えーと、2億いくんですか…初期のWordPressってなんもないからな…大したクエリもないので…

 

・bcacheをオンにした場合

Requests per second: 1412.66 [#/sec] (mean)

はあ。。。も、いっか。

 

初期テンプレでやっていると現実的じゃないな…

 

実際のサイトで試したところ、結構なばらつき。(WordPressサイト)

・エックスサーバーで運用しているサイト(なんか、ばらつき大きいな。PHP5と7の違いも大きい)

Requests per second: 5.61 [#/sec] (mean) PHP5

Requests per second: 22.70 [#/sec] (mean) PHP7

Requests per second: 63.22 [#/sec] (mean) PHP7

 

・お名前.comで2019年のリリースされたサーバー(PHP7で動作)

Requests per second: 86.29 [#/sec] (mean) PHP7

 

・過去のwpxのサーバー(今は後継がある)

Requests per second: 74.87 [#/sec] (mean) PHP7

 

すべて、ばらばらなコンテンツが載っているので正確なものではないです。また、共用なので負荷かけるのはまずいので回数等減らしているのであいまいな数字です。

サーバが速くても掲載するコンテンツや作りによって上記のように処理できる量が変わります。

 

高速だったのに、あれもこれも表示してって追加していったら、処理能力が1/3に落ちたとか結構あります。

あっちからこっちからデータをぐりぐりして持ってくるようなホームページに仕上がったら処理能力が落ちてると思ったほうが良いですね。

 

キャッシュ系は、処理能力をアップする上で便利ですが、キャッシュなのでドツボにハマるときもあります。

kusanagiの「キャッシュ除外URL」がなぜか反応しないケースが…

httpsをプラグインを入れてやっているので除外URLに

http://~とhttps://~を記述してみた。

http://~/passwordreset/[\w!?/\+\-_~=;.,*&@#$%\(\)\’\[\]]+

 

とか?簡単そうでなんだかな…

キャッシュ除外URLに空行入れていたら、キャッシュ全て有効になってなかった

正規表現を利用して「/?」が入っているページのキャッシュが除外できないような。

POSTとGETどっちも除外になるのかな?

⇒結局kusanagiのキャッシュは、良いのだが、いうこと聞かないケースが多いので外してみることにした

 

 

 

 

セキュリティだけじゃなくて、処理能力の面からみてもPHP5は、早くやめてPHP7に変えたほうが良いって結果になりました。

 

 

 

 

WordPressの「WP OAuth Server」を使ってみる

WordPressの「WP OAuth Server」を使ってみました。

よくわからないのでちょっとずつ情報をアップしていこうと思います。

 

WP OAuth Serverって何?認証に使います。OAuth2が利用できます。

https://wp-oauth.com/

 

設定ってどうするの?

 

Configuring Global Settings

Once the plugin is installed, go to OAuth Server -> Settings to access the global settings. There are two tabs for settings.

  1. General
  2. Advanced

The global settings are set to a default state which works for most installs out of the box. Go to the General Settings tab and ensure that “OAuth Server Enabled” is checked.

 

えーと、管理画面に「OAuth Server」→「Setting」があるから一般とアドバンスの設定をしろよと。

「OAuth Server Enabled」にチェックが入っていると使えるとのこと。

 

で、アドバンスを見ると

 

マニュアルはこちら
https://wp-oauth.com/docs/general/grant-types/

 

無料版だと「Authorization Code」だけ利用できるみたいです。

さてどうするの?

 

「client」からアプリを登録します。

ここでは、同じドメイン配下で別フォルダにクライアントアプリを用意しました。

 

で、認証とかどーするの?

やり方はこのページを読めと「https://wp-oauth.com/docs/general/grant-types/

で無料版で使えるのが「Authorization Code」。

 

OAuth2をやっている人はどうってことないのかな?

 

Auth Codeをとるために、「/oauth/authorize」にアクセスする。

次にAccess Tokenをゲットするのじゃ。

 

あとは、晴れてリクエストをなげよう!!!

 

なんのこっちゃいっていう人は「https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be」を参照してください。

 

エンドポイントは

/oauth/authorize/
/oauth/token/
/oauth/me/
/oauth/destroy/
/.well-known/keys/
/oauth/introspection/
/.well-known/openid-configuration/

があるそうです。

 

認証画面を出すには?

function.phpに下記のフィルターを追加する

add_filter( 'wo_use_grant_request', '__return_true' );

 

まあ、慣れるまでちょっと時間がかかりそうだ

pawを試してみた

RESTなどでHTTPのリクエストを検証するのに簡単にできるものが無いのかなって探していたら、Pawなるものに出会った。Windows版は無いようなのでちょっと残念

https://paw.cloud/

 

無料トライアルが30日間あるのでそれで試してみることにしてみた。

 

とりあえず、WordPressの初期状態でPOSTSをGETしてみた。

 

いろいろとテストするのに便利だが..その話はまたべっと。

WordPressの「メディア」>「画像編集」で画像が表示されない件

WordPressで「メディア」>「任意の画像」>「画像を編集」をクリックしていったときに添付ファイルの詳細で画像が表示されいことがありましたので対処方法をメモしておきます。

■画像が表示されない事象

 

■結論、FUNCTION.PHPが悪さしていた。

今回は、function.phpを「?>」で閉じてた。💦

 

なんでしょう。どうしたことでしょうか…閉じておりました(ノД`)・゜・。

他にもこのような事象があったときは、function.phpを見直してみましょう。

 

 

MW WP Formをやってみたのでまとめてみた。

今までコンタクトフォーム7を利用していましたが、今一つ、あのプラグインを導入するとこっちのプラグインが動かない等ちょっと面倒くさいことが多かったので「MW WP Form」を使ってみることにした。

 

プラグインについて

・無料

プラグイン本体(https://ja.wordpress.org/plugins/mw-wp-form/

 

・有料

フォームジェネレーター

⇒追加スタイルあり

 

MW WP Form CAPTCHA

 

プラグイン販売(https://plugins.2inc.org/mw-wp-form/add-on/

 

 

MW WP Formを利用してみて

 

フォームジェネレーター→今は販売停止

フォームジェネレーターは、簡単に作れるが、自由度は減る。でも、大抵は問題ないのでは??

ゴリゴリやってもいいんだけど変更も多いからGUIでちゃちゃっと変更したいから導入した

⇒スタイルはビジネスタイプがよかったので追加した。

 

独自バリデーションチェックについて

※XXXは、ルール名

「mwform_validation_rules」でフィルターを追加して独自の値チェックルールを作ることができた。

add_filter( 'mwform_validation_rules', 'mwform_validation_rule_XXX' );

「public function rule( $key, array $options = array() )」で$optionsに設定値を引き渡すのが最初よくわからなかった。

 

nameのところで最後に[XXX]で指定すればいいらしい。

name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>][XXX]"

 

 

初期値を入れたい

ログイン情報は「https://plugins.2inc.org/mw-wp-form/manual/」を参照すれば利用可能。

あとは、filterで自分で作れるのでACFで定義した値も取得することが可能

add_filter( 'mwform_value_mw-wp-form-フォームID', 'my_mwform_value', 10, 2 );

 

 

通し番号

用意されている。

 

出力

用意されている。

 

これで作りたかったフォームができるかな・・・?

 

既に指定されたフォームに投稿済みなのか調べる

重複禁止!っていうフォームを用意したいと思ったのでちょっと実現できるのか調べてみました。

基本的にはデータは「post」「postmeta」で構成されているようなのでカスタム投稿と投稿者、フォームIDで抽出可能。

あとは「get_post_meta」で「tracking_number」を取得すれば、問い合わせ番号がわかる。

※ログインユーザー限定。

 

「このページには直接アクセスできません」って表示される件

完了画面URLだけ指定していたら、確認画面等でこのメッセージが表示されるようになった。

対処としては、全ての画面のURLを入れればよいようだ。

例:reportというページでフォームを作っていて、完了ページをthanksとした場合は下記のような感じ

 

ラジオボタンやチェックボックスの並びをランダムの順番にしたい

「mwform_choices_mw-wp-form-xxx」フィルターフックすれば可能「xxx」はフォームID

表示される毎に並び順が変わります。クイズや選択肢の位置を固定したくない場合に利用可能

 

あれ、確認画面で表示が異なることがある・・・なんだろうか..

function func_choices_random( $children, $atts ) {
    if ( $atts['name'] == 'フォームのネームの値' ) {
        shuffle($children);
    }

    return $children;
}
add_filter( 'mwform_choices_mw-wp-form-xxx', 'func_choices_random', 10, 2 );

→これだと呼び出される毎にランダムになってしまう。そのため、確認画面でもずれてしまう。

POSTしたときに送っている値は自動的に出力されてる「0,1,2…」の値である。

 

単純にシャッフルしただけだとフォームの戻り値が0,1,2…ってなってしまう。

 

っていうことでいっそのこと、VALUEと表示値を指定して返すことにしてみた。

フォームのVALUEの値が指定した値になり、ランダムが実現したよ~。

function func_choices_random( $children, $atts ) {
    if ( $atts['name'] == 'フォームのネームの値' ) {
        $shuffle = $children;
        shuffle($shuffle);
        $children = array();
        foreach ($shuffle as $value)
        {
            $children += array($value => $value );
        }
    }

    return $children;
}
add_filter( 'mwform_choices_mw-wp-form-xxx', 'func_choices_random', 10, 2 );

 

 

mwform_complete_content_mw-wp-form-xxxは、2回通る?

完了画面へのコンテンツ渡しのフィルターですが2回通るようです。

wp_insert_userを利用すると完了画面が一瞬表示されるが最初のフォーム状態に戻される

 

MW WP Formでユーザー登録までしてしまおう!っていう鬼畜仕様?の場合の事象が発生した。やるべきではないと思うが・・・。

MW WP Form version 4.4.2で試した。

今後のためにもメモとして残しておくがどうなんだろうか・・・。
「mwform_complete_content_mw-wp-form-xxx」を利用したいと思うが「wp_insert_user」を利用すると完了画面が一瞬しか表示されないし、2回何故か通っていた??なんだかわからない。

っていうことでちょっと創意工夫してみたもんだ。

mwform_after_send_mw-wp-form」というアクションフックがある。メール送信後の追加処理らしい。

このアクションフックで「wp_insert_user」を実施してみた。

その後、入力画面へリダイレクトさせる。

ざっくりと下記のようなイメージ。

なぜか、「registration」はフォームの入力画面。やってみた結果ベースさ。
※一度、結果を表示しないと次に「registration」アクセスしたときに結果が表示されたので矯正リダイレクトしてみた。

これだと完了画面にエラー内容を表示できないという問題はあるけどそれは諦めです。

add_action( 'mwform_after_send_mw-wp-form-xxx', 'my_mwform_complete_useradd' );

function my_mwform_complete_useradd( $Data ){
        //ユーザー追加
        $userdata = array(
            'user_login'  =>  $user_id,//ユーザ名
            'user_pass'   =>  $password,//パスワード
            'last_name' => $last_name,//ユーザー姓
            'first_name' => $first_name,//ユーザー名
            'user_email' => $email,//email
        );
        $user_id = wp_insert_user($userdata);
        wp_redirect( '/registration/' );
        exit();
}

 

ときにはシステムのルールなんてっていう事象が多いのが現状!!