首页 > 解决方案 > PHP 变量在 HTML 标记之外转义

问题描述

我试图显示 wordpress 类别的标题,我使用标准的 woocommerce 钩子,但是它的行为很奇怪,PHP 变量在 html 标签之外转义,知道为什么吗?

这是代码:

add_action ( 'woocommerce_before_main_content', 'ebani_show_category_name' );
function ebani_show_category_name() {
    if ( is_product_category() ) {
        $category_title = single_cat_title();
        ?>
            <div class='container'>
                <div class='row ebani-title'>
                    <div class='col-xs-12'>
                        <h3 class='title'><?php $category_title ?></h3>
                    </div>
                </div>
            </div>
        <?php
    }
}

它以这种方式在页面中打印:

Category 1
<div class='container'>
    <div class='row ebani-title'>
         <div class='col-xs-12'>
              <h3 class='title'></h3>
         </div>
    </div>
</div>

如您所见,类别显示在标签上方,而标记中的<h3>显示为空,我不确定我在这里做错了什么。

标签: phpwordpresswoocommerce

解决方案


single_cat_titletitle 将echo默认调用时的值。false您可以通过传入一个值来使用第二个参数覆盖它。''如果您不添加前缀,请确保添加默认值(空字符串)作为第一个参数。

更新为:

add_action ( 'woocommerce_before_main_content', 'ebani_show_category_name' );
function ebani_show_category_name() {
    if ( is_product_category() ) {
        $category_title = single_cat_title('', false);
        ?>
            <div class='container'>
                <div class='row ebani-title'>
                    <div class='col-xs-12'>
                        <h3 class='title'><?php echo $category_title; ?></h3>
                    </div>
                </div>
            </div>
        <?php
    }
}

或者

add_action ( 'woocommerce_before_main_content', 'ebani_show_category_name' );
function ebani_show_category_name() {
    if ( is_product_category() ) {
        ?>
            <div class='container'>
                <div class='row ebani-title'>
                    <div class='col-xs-12'>
                        <h3 class='title'><?php single_cat_title(); ?></h3>
                    </div>
                </div>
            </div>
        <?php
    }
}

推荐阅读