我是PHP编码新手。我对这个有点困惑。我正在为我的wordpress网站创建一些短代码。基本上,我已经创建了一些工作良好的短代码,但是当我开始编码这一个时,输出包含不必要的
and <</p> 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编辑,但结果相同。
WordPress在页面/文章编辑器中添加了包装<p>
和<br />
。我猜这就是你输入短代码的地方。
OP找到了解决方案- http://www.simonbattersby.com/blog/2009/08/stop-wordpress-adding-br-tags/
您可以简单地在主题文件(function.php)中添加一个函数。这样,当你升级WP源代码时,你就不必考虑重新更改该功能。
使用WP法典(http://codex.wordpress.org/Function_Reference/wpautop)
添加:
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
在将生成的html发送到客户端(htmlpurifier?)之前,必须通过美化函数传递生成的html。输出有换行符,而您的代码根本没有插入任何换行符,这意味着有东西修改了您的输出。
您可能还想查找HEREDOCs,它允许您创建多行字符串,而无需重复字符串连接或引号转义的任何麻烦。