Хотел обновить PHP5.6 на PHP7.2 в шаблоне вордпресс вылезла ошибка. Прошу помощи!

12
KM
На сайте с 01.05.2013
Offline
59
1140

Всем доброго времени суток! У меня возникла проблема с шаблоном на вордпресс. Решил обновить PHP5.6 на PHP7.2

Проверил совместимость плагином PHP Compatibility Checker, плагины все совместимы, вылезла ошибка только в шаблоне сайта, в файле functions.php

Ошибка в строке: 880 | ERROR | Using 'break' outside of a loop or switch structure is invalid and will throw a fatal error since PHP 7.0

Помогите исправить ошибку.

Код:

function theme_get_adjacent_image_link($prev = true, $size = 'thumbnail', $text = false) {

global $post;

$post = get_post($post);

$attachments = array_values(get_children(array('post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID')));

foreach ($attachments as $k => $attachment)

if ($attachment->ID == $post->ID)

break;

$k = $prev ? $k - 1 : $k + 1;

if (isset($attachments[$k]))

return wp_get_attachment_link($attachments[$k]->ID, $size, true, false, $text);

}

Пронумерованный код:

873: function theme_get_adjacent_image_link($prev = true, $size = 'thumbnail', $text = false) {

874: global $post;

875: $post = get_post($post);

876: $attachments = array_values(get_children(array('post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID')));

877:

878: foreach ($attachments as $k => $attachment)

879: if ($attachment->ID == $post->ID)

880: break;

881:

882: $k = $prev ? $k - 1 : $k + 1;

883:

884: if (isset($attachments[$k]))

885: return wp_get_attachment_link($attachments[$k]->ID, $size, true, false, $text);

886: }

LEOnidUKG
На сайте с 25.11.2006
Offline
1562
#1

foreach ($attachments as $k => $attachment)

if ($attachment->ID == $post->ID)

break;

на

foreach ($attachments as $k => $attachment){

if ($attachment->ID == $post->ID)

{

break;

}

}

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
S
На сайте с 30.09.2016
Offline
459
#2

Плагин глупый, читать не умеет.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
LEOnidUKG
На сайте с 25.11.2006
Offline
1562
#3
Sitealert:
Плагин глупый, читать не умеет.

Возможно, но за такой стиль написания, я бы руки отрывал 🤪

S
На сайте с 30.09.2016
Offline
459
#4

Вам дай волю - кругом одни венеры милосские ходили бы. 😂

То за тернарные операторы руки отрывали бы, то за пропуск фигурных скобок. А мне нравится, чего церемонии разводить:

if(0)echo 'The End';
else echo 'Continue';

PS: В 2 строчки, как у ТС, не нравится, но вот Битрикс весь так написан.

KM
На сайте с 01.05.2013
Offline
59
#5
LEOnidUKG:
Возможно, но за такой стиль написания, я бы руки отрывал 🤪

😮🤪

---------- Добавлено 02.02.2019 в 02:15 ----------

LEOnidUKG:
foreach ($attachments as $k => $attachment)
if ($attachment->ID == $post->ID)
break;

на

foreach ($attachments as $k => $attachment){
if ($attachment->ID == $post->ID)
{
break;
}
}

Спасибо за помощь, ошибки, как и не бывало!

Только 3 предупреждения осталось одинаковых. Такого типа:

Строка: 128, 207,253 | WARNING | Use of deprecated PHP4 style class constructor is not supported since PHP 7.

------------------------------------------------------------------------------

Файл: widgets.php

class VMenuWidget extends WP_Widget {

128: function VMenuWidget() {

$widget_ops = array('classname' => 'vmenu', 'description' => __('Use this widget to add one of your custom menus as a widget.', THEME_NS));

parent::WP_Widget(false, __('Vertical Menu', THEME_NS), $widget_ops);

}

-------------------------------------------------------------------------------

Файл: widgets.php

class LoginWidget extends WP_Widget {

207: function LoginWidget() {

$widget_ops = array('classname' => 'login', 'description' => __('Login form', THEME_NS));

$this->WP_Widget(false, __('Login', THEME_NS), $widget_ops);

}

--------------------------------------------------------------------------------

Файл: navigation.php

class theme_MenuItem {

var $id;

var $active;

var $parent;

var $attr;

var $title;

253: function theme_MenuItem($args = '') {

$args = wp_parse_args($args, array(

'id' => '',

'active' => false,

'parent' => 0,

'attr' => '',

'title' => '',

)

);

$this->id = $args['id'];

$this->active = $args['active'];

$this->parent = $args['parent'];

$this->attr = $args['attr'];

$this->title = $args['title'];

}

function get_start($level) {

$class = theme_get_array_value($this->attr, 'class', '');

$class = 'menu-item-' . $this->id . (strlen($class) > 0 ? ' ' : '') . $class;

$this->attr['class'] = ($this->active ? 'active' : null);

$title = strip_tags(apply_filters('the_title', $this->title, $this->id));

if (theme_get_option('theme_menu_trim_title')) {

$title = theme_trim_long_str($title, theme_get_option($level == 0 ? 'theme_menu_trim_len' : 'theme_submenu_trim_len'));

}

return str_repeat("\t", $level + 1)

. '<li' . theme_prepare_attr(array('class' => $class)) . '>'

. '<a' . theme_prepare_attr($this->attr) . '>'

. $title

. '</a>' . "\n";

}

--------------------------------------------------------------------------------

Или на придуприждения можно внимания не обращать при переходе на PHP7.2?

---------- Добавлено 02.02.2019 в 02:45 ----------

Файл: widgets.php

----------------------------

А если вот так сделать?

class LoginWidget extends WP_Widget {

207: function LoginWidget() {

$widget_ops = array('classname' => 'login', 'description' => __('Login form', THEME_NS));

$this->WP_Widget(false, __('Login', THEME_NS), $widget_ops);

}

Поменять на:

class LoginWidget extends WP_Widget {

207: function __construct() {

$widget_ops = array('classname' => 'login', 'description' => __('Login form', THEME_NS));

$this->WP_Widget(false, __('Login', THEME_NS), $widget_ops);

}

Так правильно будит?

LEOnidUKG
На сайте с 25.11.2006
Offline
1562
#6
Sitealert:
Вам дай волю - кругом одни венеры милосские ходили бы. 😂
То за тернарные операторы руки отрывали бы, то за пропуск фигурных скобок. А мне нравится, чего церемонии разводить:
if(0)echo 'The End';

else echo 'Continue';


PS: В 2 строчки, как у ТС, не нравится, но вот Битрикс весь так написан.

Всё просто. У меня ей свой стиль и мне с ним удобно, писать и анализировать код :)

p.s. Про битрикс не нужно мне, у меня жена периодически занимается связью 1с и битрикс... короче у меня есть верный помощник по обламыванию рук 😂

---------- Добавлено 02.02.2019 в 10:34 ----------

Так правильно будит?

Да, должно т.к. нельзя называть класс и функцию одинаково.

Е
На сайте с 21.06.2016
Offline
27
#7

А может вернуться к ранней версии пхп? если конечно плагины будут работать

Заказать Landing Page (https://livemonet.ru/zakazat-prodayushhij-landing-page) книги по wordPress и др (https://livemonet.ru/moi-knigi/) Клиенты для вашего бизнеса под ключ (https://livemonet.ru/marketing-na-rezultat)
saanvi
На сайте с 01.04.2015
Offline
108
#8

Эт чё, в 7+ запретили такую удобную фичку, чтоб без скобок короткие выражения писать? Сцуки.

Здоровый пофигизм (http://saanvi.ru)
LEOnidUKG
На сайте с 25.11.2006
Offline
1562
#9
saanvi:
Эт чё, в 7+ запретили такую удобную фичку, чтоб без скобок короткие выражения писать? Сцуки.

Нет, это PHP Compatibility Checker не понимает такое 🍿

saanvi
На сайте с 01.04.2015
Offline
108
#10
LEOnidUKG:
Нет, это PHP Compatibility Checker не понимает такое 🍿

Тьфу, отлегло.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий