Яндекс.Практикум

Настройка тега code в wordpress – продолжение

Результат, достигнуты в этой записи меня устроил, однако при использовании приходится всё еще заменять специальные символы html на их коды. Что не очень удобно.

Поэтому я продолжил свои извращения и редактирование функции wpautop в файле движка wp-includes/formatting.php. Немного изменив обработку code, добавленную ранее:
//обработка тега коде в функции wpautop //после почти аналогичной тега pre if ( strpos($pee, '<code>') !== false ) { //нарезаем кусочки до </code> и формируем массив? ну что-то такое $pee_parts = explode( '</code>', $pee ); //верхнюю часть массива изымаем? наверняка $last_pee = array_pop($pee_parts); $pee = ''; $i = 0; //цикл, в котором обрабатывается каждый элемент массива foreach ( $pee_parts as $pee_part ) { //позиция начала <code> $start = strpos($pee_part, '<code>'); //при неверном html продолжаем if ( $start === false ) { $pee .= $pee_part; continue; } //??? видимо необходимо для дальнейшей обработки $name = "<code wp-code-tag-$i></code>"; //вырезаем часть, после тега <code> $code_content = substr( $pee_part, $start + strlen( '<code>' ) ); //преобразуем специальные символы в их html-обозначения //при этом не трогаем уже существующие, //для чего служит false в конце $code_content = htmlentities( $code_content, ENT_COMPAT | ENT_HTML401, ini_get("default_charset"), false); //добавляем в массив со строчными индексами бутербродик //из <code>, преобразованного контента и </code> $pre_tags[$name] = '<code>' . $code_content . '</code>'; //делаем некоторую неведомую хрень, я уже почти уверен, что это нужно для пост-обработки $pee .= substr( $pee_part, 0, $start ) . $name; $i++; } //склеиваем последний кусочек $pee .= $last_pee; }

Я не знаю php, поэтому решение неидеально, за что извиняюсь. Но результат достигнут, теперь всякие:
<><><><>&не нужно постоянно заменять на html-обозначения при написании поста внутри тега code.

Такой вариант уже получше, и работает везде, где внутри нет собственно тега <code> и </code>, по понятным причинам 😉

Понравилась статья? Поделиться с друзьями:
IPCalc Blog