#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, спасибо!