wordpress 6.0 wp_insert_postでうまく入らない

php8.0なのかwordpress6.0なのかわからないけど、オブジェクト型はそのまま引数に使用できなくなっていた。

$itemにいろいろな情報を入れて引数にしていたので、そのまま使っていたのがいけなかったらしい。

<誤>

‘post_status’ => $item -> status,
‘post_date’ => $item -> post_date,
‘post_date_gmt’ => $item -> post_date

<正>

‘post_status’ => (string)$item -> status,
‘post_date’ => (string)$item -> post_date,
‘post_date_gmt’ => (string)$item -> post_date

 

 

【症状】

ロリポップphp7.1モジュール版を使用していて、急にサーバーメンテナンスで勝手に7.1CGI版になってしまい古いwordpress4.9.*くらいみたいなやつが完全に動かなくなったので、FTPで無理やり仕方なくwordpress6.0にしてphp8.1CGI版にしたらwp_insert_postで入らなかった感じ。

特にpost_status、post_date_gmt、post_dateにどうしても変な値が入るので動かなかった。

原因がわかるとあぁ…何ですよね。

「明日から”あだ名”は禁止です。フルネームで呼びましょう」って言われた小学生の気持ちです。

 

 

ContactForm7で送信完了画面に飛ばす最低な方法

いろいろな方法があるけど、
なんやかんやとうまくいかないので、かなり初心に帰った基本中の基本の方法です。

 

次の内容をfunction.phpに入れるだけです。

 

add_action( ‘wp_footer’, ‘add_thanks_page’ );
function add_thanks_page() {
  if( get_the_ID() == ‘9’ ) {
    echo <<< EOD
<script>
let search_query = document.getElementById(“wpcf7-f5-p9-o1”).innerHTML;
if(search_query.indexOf(‘ありがとうございます。メッセージは送信されました。’) != -1){
  location = ‘飛ばしたいページの’;  
}
</script>
EOD; }}

 

ざっくりいうと

1.post_id=9の場合、これをページ末に記述します
2.「wpcf7-f5-p9-o1」というIDのDIVを探して
3.その中に「ありがとうございます。メッセージは送信されました」の文字があったら飛ばす。

というだけです…

 

jQueryとかも使っていなくてカッコよくないけど、とりあえず動けばヨシ! by.現場より

 

Contactform7のほうでサンキューメッセージを変えていたら
indexOfの部分を変えればOK

 

WordPressユーザー登録パスワードが出ない

タイトル通りです。

ユーザー登録やパスワード変更の際に「パスワードを表示」ボタンを押しても入力部分が出ないでスカスカした動きになる状況。

 

解決方法案

ほとんどのWordpressで使用していると思われるAdvanced Custom Fieldsのプラグインとぶつかっていました。

 

停止させたら動きました!

 

原因

phpのバージョンが7以下の古いものだと上記のようなことが起こるらしいです。

同じ環境でphp7のサーバーだったら正常に動いたサイトもありました。