Сложно ли опытному глазу отличить, что в коде не поддерживается php7?

12
xoxol4uk22
На сайте с 14.11.2017
Offline
66
545

На многих сайтах (вордпресс) годами хлебные крошки у меня выводились одной и той же функцией. Но теперь при переходе на PHP 7+ все что ниже этой функции не грузится.

Извините за наглость, я просто вообще не могу оценить, насколько трудно найти часть, которая не поддерживается в более новых версиях php. Просто вдруг опытный прогер сразу такое видит. Может там просто мелкие изменения в синтаксисе какие-то поддерживаться перестали и кавычку убрать/заменить и все путем....

Или просто, оцените ситуацию. Стоит ли искать баг в коде. Просто привык везде эту функцию применять, где в шаблоне нет аналога... Если это сложно, то конечно, помощи никакой не требуется. Буду искать альтерантиву, хотя не хотелось бы...

Вот сам код:

/*** Функция хлебных крошек ***/

function the_breadcrumb() {
if ( !is_home() ) {
echo '<div id="breadcrumb">
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:inline-block;">
<a itemprop="url" href="';
echo get_option('home');
echo '" ><span itemprop="title">Главная</span>';
echo "</a></div><span> » </span>";
}

if ( is_category() ) {
$cats = get_the_category();
$cat = $cats[0];
$output .= '<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:inline-block;">
<a itemprop="url" href="'.get_category_link($cat->term_id).'" ><span itemprop="title">'
.$cat->name.'</span></a></div>';
echo ''.$output.'';
}

if ( is_single() ) {
$cats = get_the_category();
$cat = $cats[0];
$output .= '<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:inline-block;">
<a itemprop="url" href="'.get_category_link($cat->term_id).'" ><span itemprop="title">'
.$cat->name.'</span></a></div><span> » </span>';
echo ''.$output.'';
}

if(is_single())
{
echo '<span class="crumbs" >'
;trim_title_words(25, '...'); /* максимальное количество слов в хлебных крошках на текущий материал, когда находимся в статьях */
echo '</span>';
}
if(is_page())
{
echo '<span class="crumbs" >'
;trim_title_words(25, '...'); /* максимальное количество слов в хлебных крошках на текущий материал, когда находимся на страницах */
echo '</span>';
}
echo "</div><div class=\"clear\"></div>";
}

/* функция, которая делает возможным обрезать длину заголовка материала (смю выше) */
function trim_title_words($count, $after) {
$title = get_the_title();
$words = split(' ', $title);
if (count($words) > $count) {
array_splice($words, $count);
$title = implode(' ', $words);
}
else $after = '';
echo $title . $after;
}
/*** Конец функции хлебных крошек ***/

function new_excerpt_more($more) {
global $post;
return '<a href="'. get_permalink($post->ID) . '"> Читать дальше......</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

Ну и вывод:

<div id="breadcrumbs">
<?php the_breadcrumb();?>
</div>
LEOnidUKG
На сайте с 25.11.2006
Offline
1770
#1

ну так включите отладку в WP и посмотрите какая ошибка будет.

---------- Добавлено 29.08.2019 в 16:39 ----------

Как минимум функция

https://www.php.net/manual/ru/function.split.php

Удалена из PHP7

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Gerga
На сайте с 02.08.2015
Offline
94
#2
xoxol4uk22:
Извините за наглость, я просто вообще не могу оценить, насколько трудно найти часть, которая не поддерживается в более новых версиях php.

Вам и не надо этого делать. PHP, если позволить ему, показывает на какой строке есть ошибка, на какой строке используется устаревшая функция и т.д...

xoxol4uk22:
Стоит ли искать баг в коде.

В данном случае, нужно просто включить отображение ошибок, в этом коде не логическая ошибка. Но код плох :)

bums
На сайте с 03.07.2006
Offline
449
#3

в глаза бросается

xoxol4uk22:
$words = split(' ', $title);

замени на

$words = explode(' ', $title);


---------- Добавлено 29.08.2019 в 16:41 ----------

upd

LEOnidUKG, опередил :)

Недорогая регистрация и продление доменов RU/SU/РФ/COM/NET/ORG/и т.д. ( https://www.regnic.name/?sesign ) в РЕГРУ, РЕГТАЙМ, Р01, РУЦЕНТР. А так же хостинг и SSL сертификаты.
xoxol4uk22
На сайте с 14.11.2017
Offline
66
#4

bums,

Спасибо огромное, все теперь четко работает, как и раньше))

LEOnidUKG:
ну так включите отладку в WP и посмотрите какая ошибка будет.

Да, ради интереса дебаг включил, эту строку среди прочих ошибок показало.

НО! Краткая притча:

Есть у меня друг хороший. 7 лет проработал на мясокомбинате – жижу для варки шинки делал. По образованию сам технолог. Потом рассчитался и пошел на один из свинокомплексов (огромная свиноферма) ветеринаром. Знаний, разумеется, ноль.

Говорит ему начальник (старший ветеринар) – мол пойди посмотри там свиноматка лежит заболела. Он пошел, посмотрел – да, действительно лежит, заболела...

Вот и я такой же эксперт в пхп, как мой друг в ветеринарии. Включу дебаг, посмотрю...

Gerga
На сайте с 02.08.2015
Offline
94
#5
xoxol4uk22:
Вот и я такой же эксперт в пхп, как мой друг в ветеринарии. Включу дебаг, посмотрю...

Дебаг - это друг разработчика. Разрабатывать с включенным дебагом - это хорошая практика.

Не правильно думать, что если опытен - значит дебаг не нужен, он всегда нужен. :)

SeVlad
На сайте с 03.11.2008
Offline
1609
#6
Gerga:
Разрабатывать с включенным дебагом - это хорошая практика.

Как гриться - люто плюсую.

Но ещё добавлю применительно к ВП: у него есть хорошие друзья разработчика типа https://wordpress.org/plugins/query-monitor/ . Сильно помогает и в правильном выборе темы/плагинов и хостинга и разных других вещах.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
xoxol4uk22
На сайте с 14.11.2017
Offline
66
#7

А может тогда подсказать еще, что и здесь не так в плане пхп 7, пожалуйста?

$text = eregi_replace($notetag, $showtag, $text);

Ну точнее я и сам почитал в справке, что "eregi_replace" устарела, но методом тыка заменить ее на preg_replace пока не получается...

SeVlad
На сайте с 03.11.2008
Offline
1609
#8
xoxol4uk22:
А может тогда подсказать еще, что и здесь не так в плане пхп 7, пожалуйста?

https://www.php.net/manual/ru/function.eregi-replace.php

IL
На сайте с 20.04.2007
Offline
435
#9

SeVlad, Да говорит же.. помощь почитал.. ))

xoxol4uk22:
почитал в справке, что ... методом тыка заменить ее на preg_replace пока не получается...

Если простой заменой "не прокатывает", следует привести $notetag к виду регулярки

$notetag = "#{$notetag}#i";

p.s. А что в $notetag попадает?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
xoxol4uk22
На сайте с 14.11.2017
Offline
66
#10

SeVlad, круто, но там не все так просто. Я это и сам прочел. Просто была нормальная элементарная функция для замены одного на другое. А переделали на мега-сложну...

12

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