我想在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;
}
答案 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 );