wordpress functions.php中的html标签

时间:2017-02-04 19:13:53

标签: php html wordpress

我想在php变量中插入一些HTML标记,但它只会导致php变量值。

获取the_subtitle()值并将其插入php变量中,最后将其添加到$content的第一部分。我不明白为什么HTML标签不显示..

我的代码:

add_filter( 'the_content', 'add_before' , 20 );

function add_before($content) {
    if ( the_subtitle() ){
        $custom_content = '<h2 class="subtitlessss">'.the_subtitle().'</h2><br>'; 
    }
    $content = $custom_content.$content;
    return $content;
}

2 个答案:

答案 0 :(得分:0)

您拥有的代码将始终运行此行:

$content = $custom_content . $content;

这可能是问题吗?如果the_subtitle()返回true值,请尝试仅修改$ content,如下所示:

add_filter( 'the_content', 'add_before' , 20 );

function add_before( $content ) {

  if ( the_subtitle() ) {
    $custom_content = '<h2 class="subtitlessss">' . the_subtitle() . '</h2><br>'; 
    $content = $custom_content . $content;
  }

  return $content;
}

如果您只看到$ content的值,因为您的代码当前代表,那么这意味着the_subtitle()不会返回true值,因此$ custom_content中没有值。这应该抛出 注意:未定义的变量 消息。你的wp-config中有这行吗?

define('WP_DEBUG', true);

研究the_subtitle()后更新

好的,所以似乎the_subtitle()采用与本机WP函数the_title相同的参数,因为文档说here

  

参数就像WP内置的the_title()方法一样,   the_subtitle()标记接受三个参数:

     

$ before(字符串)放在字幕之前的文本。默认为&#34;&#34;。

     

$ after(字符串)放在字幕后面的文本。默认为&#34;&#34;。

因此,如果您希望HTML在the_subtitle之前和之后出现,请将其作为参数传递:

the_subtitle( '<h2 class="subtitlessss">','</h2><br>' );

编辑检查功能存在

另外,也许我们应该检查是否存在the_subtitle而不是在if语句中调用它?像这样:

if ( function_exists( 'the_subtitle' ) )

整个摘录的更新代码如下:

<?php

add_filter( 'the_content', 'add_before' , 20 );

function add_before( $content ) {

  if ( function_exists( 'the_subtitle' ) ) {
    $custom_content = the_subtitle( '<h2 class="subtitlessss">','</h2><br>' ); 
    $content = $custom_content . $content;
  }

  return $content;
}

答案 1 :(得分:0)

您正在使用过滤器修改the_content()的输出。你的回调应该返回一个值,但你正在使用的功能是输出你的副标题而不是返回它。

根据插件文档,它的工作方式与WordPress的the_title()相同。最初我认为get_the_subtitle()会更合适,但事实并非如此。告诉the_subtitle()不要输出(第三个arg)。

function add_before( $content ) {

    // Check if the subtitle has been set and assign the value to $subtitle
    // Saves us having to call the same function again.
    if ( $subtitle = the_subtitle( '<h2 class="subtitlessss">', '</h2><br />', false ) ) {

        // Prepend to the content.
        $content = $subtitle . $content;
    }

    // ALWAYS return content.
    return $content;
}
add_filter( 'the_content', 'add_before', 20 );