Почему выходные данные моего кода содержат дополнительные теги и , когда это не указано в коде?

#php #wordpress

#php #wordpress

Вопрос:

Я новичок в PHP-кодировании. Меня это смущает. Я создаю несколько коротких кодов для своего сайта WordPress. В принципе, я создал несколько коротких кодов, которые работают нормально, но когда я начинаю кодировать этот, выходные данные содержат ненужные теги < br> и <p>.

вот часть моего кода:

 function searchbox ($atts) {
global $wpdb;
$link = get_bloginfo('url').'/search/';
$out .= '<form name="search" action="'.$link.'" method="get">';
$out .= '<label>Developer:</label>';
$out .= '<select name="dev">';
$developers = $wpdb->get_col($wpdb->prepare("
        SELECT DISTINCT meta_value 
        FROM $wpdb->postmeta 
        WHERE meta_key = %s 
        ORDER BY meta_value ASC", 'developer') );
 if ($developers) {
   foreach ($developers as $developer) {
     $out .= "<option value="" . $developer . "">" . $developer . "</option>";
   }
 }
$out .= '</select>';
$out .= '<label>Location</label><select name="loc">';
$locs = $wpdb->get_col($wpdb->prepare("
        SELECT DISTINCT meta_value 
        FROM $wpdb->postmeta 
        WHERE meta_key = %s 
        ORDER BY meta_value ASC", 'loc') );
 if ($locs) {
   foreach ($locs as $loc) {
     $out .= "<option value="" . $loc . "">" . $loc . "</option>";
   }
 }
$out .= '</select>';
$out .= 'Price Range: <input type="text" size="4" name="pmin"> '
         'to <input type="text" size="4" name="pmax">';  
$out .=  '<input type="submit" value="search" />';
$out .= '</form>';
return $out;
}
add_shortcode ('searchbox', 'searchbox');
  

затем в редакторе WP добавляется короткий код [searchbox]. выходной HTML-код является:

 <form name="search" action="http://www.mycondophilippines.com/search/" method="get">
    <label>Developer:</label><br /> 
    <select name="dev"> 
        <option value="Avida Land">Avida Land</option> 
        <option value="DMCI Homes">DMCI Homes</option> 
        <option value="SMDC">SMDC</option> 
    </select> 
    <p><label>Location</label><br /> 
    <select name="loc"> 
        <option value="Makati">Makati</option> 
        <option value="Mandaluyong">Mandaluyong</option> 
        <option value="Manila">Manila</option> 
    </select> 
    <p>Price Range:<br /> 
    <input type="text" size="4" name="pmin"> to<br /> 
    <input type="text" size="4" name="pmax"> 
    <input type="submit" value="search" />
</form> 
  

Обратите внимание на добавленные теги br и p. Я заметил, что при добавлении текста в html-код автоматически добавляются теги <br> или <p> . Я запутался с этим, потому что функции шорткода, которые я создаю, находятся в одном php-файле, а остальные отлично работают с текстом в html-коде. Именно эта функция добавляет теги.

Я использую Dreamweaver CS5 для кодирования. Но я пытался редактировать с помощью notepad2, но с тем же результатом.

Комментарии:

1. На собеседовании меня спросили: «Каким редактором вы пользуетесь?» Я сказал notepad . Он сказал «О, хорошо, потому что, если ты сказал Dreamweaver, ты мог бы с таким же успехом выйти за дверь прямо сейчас».

2. Спасибо Джейсону и Марку за то, что поделились своими ответами! Мне удалось найти ответ, похоже, что после того, как шорткод передается в редактор WP, WP добавляет теги. Я нашел решение здесь: http://www.simonbattersby.com/blog/2009/08/stop-wordpress-adding-br-tags / . Это сработало. Я был в тупике, потому что спасибо!

3. Вы должны проголосовать за их ответы / выбрать лучший ответ.

4. Я новый участник, и у меня нет репутации, необходимой для повышения. =)

5. Я проголосовал «за», чтобы помочь вам проголосовать «за».

Ответ №1:

WordPress добавляет обертку <p> и <br /> в редакторе страниц / записей. Я предполагаю, что именно там вы вводите свой короткий код.

Обновить

OP нашел решение — http://www.simonbattersby.com/blog/2009/08/stop-wordpress-adding-br-tags /

Комментарии:

1. Джейсон, у меня та же проблема, и я попробовал вышеупомянутое решение, все теги <br> исчезли, но теги <p> все еще там. Помогите мне?

Ответ №2:

Вы можете просто добавить функцию в свой файл темы (function.php ). Таким образом, при обновлении исходного кода WP вам не придется думать о повторном изменении этой функции.

используя WP codex (http://codex.wordpress.org/Function_Reference/wpautop )

просто добавьте:

 remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
  

Ответ №3:

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

Вы также можете захотеть посмотреть HEREDOCs, которые позволяют создавать многострочные строки без каких-либо проблем с повторным дополнением строк или экранированием кавычек.

Комментарии:

1. Привет, это мой шаблон функции шорткода: functionname ($atts){ .. код идет здесь с переменной $ out для вывода html.. верните $out; } все мои функции шорткода имеют этот формат. Я проверю HEREDOCs, спасибо!