首页 > 解决方案 > 回调函数中php打开和关闭标签的奇怪用法

问题描述

这是一个 TwentyTwelve WordPress 主题,实际上是 WordPress 本身作为学习主题开发的好材料提出的。

此函数作为回调发送。但问题是代码中 PHP 打开和关闭标签的奇怪用法:

我已经用这个评论标记了它们:/* <------ LIKE THIS */

function twentytwelve_header_style() {
 $text_color = get_header_textcolor();


 if ( $text_color == get_theme_support( 'custom-header', 'default-text-color' ) ) {
    return;
 }

 ?> /* <------ LIKE THIS */
 <style type="text/css" id="twentytwelve-header-css">
 <?php

if ( ! display_header_text() ) :
    ?>
.site-title,
.site-description {
    position: absolute;
    clip: rect(1px 1px 1px 1px); /* IE7 */
    clip: rect(1px, 1px, 1px, 1px);
}
    <?php

    else :
        ?>
    .site-header h1 a,
    .site-header h2 {
        color: #<?php echo $text_color; ?>;
    }
<?php endif; ?>
</style>
<?php   /* <------ LIKE THIS */
}

为什么以这种方式使用它们?

标签: phpwordpress

解决方案


这不是一个干净的代码,但它并不像你想象的那样奇怪,当函数直接打印 html 时,php 标签是关闭的,你可以像这样更改你的代码:


<?php // I think that your code miss opening tag or maybe opening tag is before your snippet

function twentytwelve_header_style() {
 $text_color = get_header_textcolor();


 if ( $text_color == get_theme_support( 'custom-header', 'default-text-color' ) ) {
    return;
 }

 echo '<style type="text/css" id="twentytwelve-header-css">'; /* <------ ECHO AND NO CLOSING PHP TAG */

if ( ! display_header_text() ) :

    echo '.site-title, .site-description { position: absolute; clip: rect(1px 1px 1px 1px); /* IE7 */ clip: rect(1px, 1px, 1px, 1px); }'; /* <------ ECHO AND NO CLOSING PHP TAG */
    else :
    echo '.site-header h1 a, .site-header h2 { color: #<?php echo $text_color; }'; /* <------ ECHO AND NO CLOSING PHP TAG */
endif;
echo '</style>'; /* <------ ECHO AND NO CLOSING PHP TAG */


推荐阅读