WEBサイト作成時に発生するエラーやトラブル対応の備忘録を中心に、いろいろと書いております。


WordPress Typesプラグイン(有料化前)PHP8.0にアップしたときに出るエラー対策(メモ)

,

Fatal error: Unparenthesized a ? b : c ? d : e is not supported. Use either (a ? b : c) ? d : e or a ? b : (c ? d : e) in wp-content\plugins\types\vendor\toolset\toolset-common\lib\enlimbo.forms.class.php on line 931

曖昧な表現を禁止しているらしいので、警告通りに下記のように変更

return isset($_REQUEST[$name]) ? sanitize_text_field( $_REQUEST[$name] ) : in_array($element['#type'], array('textfield', 'textarea')) ? '' : 0;

return (isset($_REQUEST[$name]) ? sanitize_text_field( $_REQUEST[$name] ) : in_array($element['#type'], array('textfield', 'textarea'))) ? sanitize_text_field( $_REQUEST[$name] ) : 0;

この変更はいくつかありますので、エラーがなくなるまで処理。

wp-content\plugins\types\vendor\twig\twig\lib\Twig\Node.php on line 42
wp-content\plugins\types\vendor\twig\twig\lib\Twig\Node.php on line 199
wp-content\plugins\types\vendor\toolset\types\embedded\classes\forms.php on line 1119
wp-content\plugins\types\vendor\toolset\toolset-common\toolset-forms\classes\class.eforms.php on line 1293

Warning: “continue” targeting switch is equivalent to “break”. Did you mean to use “continue 2”? in wp-content\plugins\types\vendor\toolset\types\embedded\includes\wpml.php on line 646

Warning: “continue” targeting switch is equivalent to “break”. Did you mean to use “continue 2”? in wp-content\plugins\types\vendor\toolset\types\embedded\includes\wpml.php on line 663

continueをbreakがわりに使うなってことだと思うんですけど、このif文内のcontinueですが、if文抜けたあとに「break」あるし、不要な気がするので削除しました。

Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in wp-content\plugins\types\vendor\toolset\toolset-common\utility\condition\theme\layouts-support\native\available.php:29

implode() 関数に逆の順番でパラメータを渡すのは推奨されなくなりました。implode($parts, $glue) ではなく、 implode($glue, $parts) を使ってください。

https://www.php.net/manual/ja/migration74.deprecated.php

ということでしたので、修正。

    $search_pattern = '{' . implode( $theme_paths, ',' ) . '}/{' . implode( $files_starting_with, ',' ) . '}*.php';

    $search_pattern = '{' . implode( ',', $theme_paths ) . '}/{' . implode( ',', $files_starting_with ) . '}*.php';

Fatal error: Uncaught TypeError: array_key_exists(): Argument #2 ($array) must be of type array, Types_Taxonomy given in wp-content\plugins\types\vendor\twig\twig\lib\Twig\Template.php:580

オブジェクトに対してarray_key_existsを使えなくなりました。

property_existsを使えってずっと前から言われていたので、今さらこれに引っかかることはないでしょう。

https://qiita.com/rana_kualu/items/c110cb244c3ee38c6859
if (isset($object->$item) || array_key_exists((string) $item, $object)) {

if (isset($object->$item) || property_exists($object, (string) $item) {

以上、だいぶ昔のTypesで、有料化になってしまったからアップデートできず、ACFにもっと早くに出会っていたら……というサイトの対処でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください