Php 为什么由短代码返回的html不能作为html执行?

Php 为什么由短代码返回的html不能作为html执行?,php,wordpress,shortcode,Php,Wordpress,Shortcode,嗨,我对php相当陌生,开始胡乱使用一些短代码。我创建了一个快速快捷代码,返回一个包含html的字符串。我希望它能被浏览器执行。除了一个像这样打印出来的链接外,几乎所有的链接都能正常执行 <a href="#" target="_blank">Example</a> 这是我写的短代码 add_shortcode('booklist_jumbo','generate_booklist_jumbo'); //[bookli

嗨,我对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;

            }
add_shortcode('booklist_jumbo','generate_booklist_jumbo');
//[书单]
函数generate\u booklist\u jumbo($atts)
{
$a=短码_附件(阵列)(
“类别”=>“即将推出”,
'名称'=>'',
“列表顺序”=>“描述”
)(港币),;
$bookOrder=$a[图书订单];
$listOrder=$a[列表顺序];
如果($a[名称]!=''){
$name=$a[name];
$second_db=新wpdb(db_用户,db_密码,“saic3_库索引”,db_主机);
$query=“从`LibraryList`中选择*,其中`list\u name`=%s按日期\u创建的订单$listOrder LIMIT 1”;
$booklist=$second\u db->get\u results($second\u db->prepare($query,$name));
}
else if($a[类别]!=“”){
$cat=$a[类别];
$second_db=新wpdb(db_用户,db_密码,“saic3_库索引”,db_主机);
$query=“选择ll.*从llc.category\U id=llcl.fk\U category\U id上的LibraryList llc内部联接LibraryList llcl.fk\U id内部联接LibraryList llcl.fk\U list\U id=ll.list\U id,其中llc.name=%s ORDER BY ll.date\U创建了$listOrder LIMIT 1”;
$booklist=$second\u db->get\u results($second\u db->prepare($query,$cat));
}
如果($booklist!=null){
$booklist[0]->list\u name=stripslashes($booklist[0]->list\u name);
$code=strval($booklist[0]->list\u type\u code);
$msg=stripslashes($booklist[0]->banner\u msg);
$msg=str_replace(“\\n”、“
”、$msg); 交换机($代码){ 案例“1”:$link=“/booklist details/”$booklist[0]>fk_list_id;break; 案例“2”:$link=“/booklist dvd details/”$booklist[0]->fk_list_id;break; 案例“3”:$link=“/booklist audio details/”$booklist[0]>fk_list_id;中断; } $content=''; $content.='

'.$msg.

'; $content.=''; } 否则{ $content=“无书目记录”; } $second_db->close(); 返回$content; }
除了包装在p标签中的横幅消息外,一切都按预期进行…我尝试查找任何类似的内容,但似乎找不到任何内容。我猜这与它被认为是字符串而不是html有关,但我不确定如何修复它


请为
$msg

$msg = str_replace("\\n", "<br>", $msg);
$msg = add_filter( 'the_content', $msg );
$msg=str\u replace(\\n“,“
”,$msg); $msg=添加_过滤器('the_content',$msg);
由于很难理解您的想法,您能否分享该问题的截图want@Jaydp刚刚加上,你能解释一下吗?add_过滤器应该接受回调,对吗?“内容”应该包含什么。这也是一条动态消息,所以我需要一种方法来让html执行,无论它包含什么。