php - 为什么我的由简码返回的 html 没有作为 html 执行?
问题描述
嗨,我对 php 相当陌生,并开始使用一些短代码。我创建了一个快速简码,它返回一个包含 html 的字符串。我希望它由浏览器执行。除了实际打印出来的链接之外,几乎所有内容都得到了正确执行
<a href="#" target="_blank">Example</a>
这是我写的简码
add_shortcode('booklist_jumbo','generate_booklist_jumbo');
//[booklist_jumbo]
function generate_booklist_jumbo($atts)
{
$a = shortcode_atts( array(
'category' => 'Upcoming',
'name' => '',
'list_order' => 'DESC'
), $atts );
$bookOrder = $a[book_order];
$listOrder = $a[list_order];
if($a[name] !== '') {
$name = $a[name];
$second_db = new wpdb(DB_USER, DB_PASSWORD, "saic3_LibraryIndex", DB_HOST);
$query = "SELECT * FROM `LibraryList` WHERE `list_name` = %s ORDER BY date_created $listOrder LIMIT 1";
$booklist = $second_db->get_results( $second_db->prepare( $query, $name) );
}
else if($a[category] !== "") {
$cat = $a[category];
$second_db = new wpdb(DB_USER, DB_PASSWORD, "saic3_LibraryIndex", DB_HOST);
$query = "SELECT ll.* FROM LibraryListCategory llc INNER JOIN LibraryListCategoryList llcl ON llc.category_id = llcl.fk_category_id INNER JOIN LibraryList ll ON llcl.fk_list_id = ll.list_id WHERE llc.name= %s ORDER BY ll.date_created $listOrder LIMIT 1";
$booklist = $second_db->get_results( $second_db->prepare($query, $cat) );
}
if ($booklist!=null) {
$booklist[0]->list_name = stripslashes($booklist[0]->list_name);
$code = strval($booklist[0]->list_type_code);
$msg = stripslashes($booklist[0]->banner_msg);
$msg = str_replace("\\n", "<br>", $msg);
switch($code) {
case "1": $link = "/booklist-details/".$booklist[0]->fk_list_id; break;
case "2": $link = "/booklist-dvd-details/".$booklist[0]->fk_list_id; break;
case "3": $link = "/booklist-audio-details/".$booklist[0]->fk_list_id; break;
}
$content = '<div class="bootstrap-container"><div class="row"><div class="col-md-12"><div class="jumbotron container-fluid" style="height: 600px; width: 100%; background: url('.$booklist[0]->image_url.') no-repeat center center; background-size: cover;">';
$content.= '<a href="'.$link.'" target="_blank" ><h2 class="book-feat-title center-block">'.$booklist[0]->list_name.'</h2></a><p class="book-feat-msg">'.$msg.'</p>';
$content.= '</div></div></div></div>';
}
else {
$content="<h4>no booklist records</h4>";
}
$second_db->close();
return $content;
}
除了包装在 ap 标签中的横幅消息外,一切都按预期工作……我尝试查找任何类似的东西,但似乎找不到任何东西。我猜这与它被认为是字符串而不是 html 有关,但我不确定如何修复它。
解决方案
请再添加一行$msg
$msg = str_replace("\\n", "<br>", $msg);
$msg = add_filter( 'the_content', $msg );
推荐阅读
- x86 - 从 x86 CPU 生成 64 字节读取 PCIe TLP
- vba - ms访问vba listbox.rowsource在添加where子句时格式化没有结果
- puppet - 获取问题 wuth puppet 模块 pcfens/filebeat
- css - 如何改变CF7的宽度?
- android - 从 RecyclerView 将项目添加到 arraylist
- typescript - 打字稿对象中的不同数组
- sql - 如何在 SQL 中查询多个具有位置的子字符串?
- android - Android - 无法实例化一个或多个类
- python - 无法在 msql 中显示列
- android - 滚动无法向上