• Здравствуйте,
    я использую плагин php-exe в постах и страницах сайта, у меня стоит самая последняя версия WP
    я столкнулся с проблемой выполнения кода PHP в постах если используется тэг —more— , другими словами там где есть это тэг код не выполняется

    я сделал дебажинг кода и выяснил что виновата функция нормализации кода, она запускается только когда используется тэг —more—

    функция находиться в файле formatting.php и называется function force_balance_tags( $text )

    как оказалось, при нормализации кода эта функция вносит ошибку, т.е.
    в последовательность <? добавляется пробел между < и ? это делает любой код не работоспособным в посте

    я нашел место где добавляется этот пробел:

    // Attributes
    			$attributes = $regex[2];
    			if( ! empty( $attributes ) && $attributes[0] != '>' )
    				$attributes = ' ' . $attributes;  <!-- вот тут  -->
    
    			$tag = '<' . $tag . $attributes . '>';
    			//If already queuing a close tag, then put this tag on, too
    			if ( !empty($tagqueue) ) {
    				$tagqueue .= $tag;
    				$tag = '';
    			}

    я также нашел способ как временно устранить этот баг:

    // Attributes
    			$attributes = $regex[2];
    			$shdstrphp = strpos($regex[0], '<?');  //добавлена переменная для проверки строки атрибутов (как правило в ней и содержится строка с кодом)и если она есть то выполняется обход нормализации
    			if ($shdstrphp === false)  {
    			if(  !empty( $attributes ) && $attributes[0] != '>' ) {
    				$attributes = ' ' . $attributes;}
    			$tag = '<' . $tag . $attributes . '>';}
    			else {
    			$tag = $regex[0];}
    			//If already queuing a close tag, then put this tag on, too
    			if ( !empty($tagqueue) ) {
    				$tagqueue .= $tag;
    				$tag = '';
    			}

    но после обновления wp естественно все вернулось обратно,
    прошу вас исправить ошибку, т.к. она делает полностью нерабочим код в постах особенно когда выполняется авто обновление wp

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Видимо, вы говорите о плагине http://wordpress.org/plugins/exec-php/ Увы, но он состарился…

    прошу вас исправить ошибку

    Никто не будет исправлять «элемент» безопасности в угоду нестандартного использования постов/страниц. PHP коду нечего там делать. 🙂

    Можете попробовать другие плагины из этой серии http://wordpress.org/plugins/tags/exec, есть свежее среди них и предлагающее более правильный путь, — вставлять код через шорткоды..

    Спасибо за ответ, если честно , у меня были подозрения, что эта функция возможно используется как «элемент» безопасности.
    но с вашими аргументами я соглашусь лишь на половину )

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

    по этой причине приходиться использовать плагины типа exec-php

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

    также у меня есть ощущения, что использования шоткодов для выполнения кода в постах вместо самого кода, это банальный обход той проблемы, которую я описал ))

    я согласен что для большинства тех кто использует WP включать выполнения кода в постах нет необходимости, но должна быть функция или галочка, которая при необходимости позволит это делать
    это бы решило кучу проблем , и отпала необходимость лопатить интернет в поисках причин проблемы и устанавливать дополнительные плагины.

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

    но это мое личное мнение, поэтому прошу много камней в огород не закидывать ))))

    с вашими аргументами я соглашусь лишь на половину )

    понимаю 🙂

    использование WP уже давно вышло за рамки стандартного сайта для блогов

    это настолько ужасно… блог, он и в Африке блог.. Для магазинов, форумов и тп, есть более «заточенные» движки..

    то применение шоткодов вместо обычного кода на мой личный взгляд весьма спорный вопрос

    PHP код может написать любой школьник, а вот шорткод — нет, потому что надо знать его название, как минимум..

    но вот использовать шоткоды менее удобно чем писать сразу код

    Можно сделать кнопку в редакторе, которую будете видеть (использовать) только вы..

    использования шоткодов для выполнения кода в постах вместо самого кода, это банальный обход той проблемы

    большей частью — да. Но и еще много-много преимуществ.

    Как то так 😛

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «BUG! in fuction force_balance_tags-wp add space» закрыта для новых ответов.