我正在使用一个latex插件在我的wordpress网站上显示公式,我想添加包含公式的短代码,因此短代码的内容必须由插件处理才能显示在页面中。
例如,通过写作$\\frac{15}{5} = 3$
在编辑器中,这将显示在页面中.
所以我写了这个简单的短代码
add_shortcode( \'test\', \'test_sc\' );
function test_sc( $atts ){
return "$\\frac{15}{5} = 3$";
}
但是通过写作
[test]
在编辑器中,这将显示在页面中
$\\frac{15}{5} = 3$
.
所以我寻找解决问题的方法,通过写作发现
add_shortcode( \'test\', \'test_sc\' );
function test_sc( $atts ){
return apply_filters( \'the_content\', \'$\\frac{15}{5} = 3$\' );
}
公式显示正确,但它被包装在
<p>
标记,以便通过写入
the fraction [test] equals a natural number
, 这将显示
这是来自控制台的HTML
<p>the fraction </p><p><img ...></p>
equals a natural number<p></p>
我希望短代码不会被包装在p标签中。
我知道有一个Toggle wpautop
但是,由于我在所有页面中都编写公式,手动编写将是巨大的时间浪费<p>
每个页面中的标签。
我搜索了很多关于这个问题的信息,到目前为止,我就是这么尝试的(以下所有代码都放在functions.php
文件)
remove_filter( \'the_content\', \'wpautop\' );
add_filter( \'the_content\', \'wpautop\' , 99);
add_filter( \'the_content\', \'shortcode_unautop\',100 );
add_shortcode( \'test\', \'test_sc\' );
function test_sc( $atts ){
return apply_filters( \'the_content\', \'$\\frac{15}{5} = 3$\' );
}
<小时>
function wpex_clean_shortcodes($content){
$array = array (
\'<p>[\' => \'[\',
\']</p>\' => \']\',
\']<br />\' => \']\'
);
$content = strtr($content, $array);
return $content;
}
add_filter(\'the_content\', \'wpex_clean_shortcodes\');
add_shortcode( \'test\', \'test_sc\' );
function test_sc( $atts ){
return wpex_clean_shortcodes(apply_filters( \'the_content\',\'$\\frac{15}{5} = 3$\' ));
}
<小时>
add_shortcode( \'test\', \'test_sc\' );
function test_sc( $atts ){
$content = apply_filters( \'the_content\',\'$\\frac{15}{5} = 3$\' );
$content = shortcode_unautop($content);
return $content;
}
<小时>
add_shortcode( \'test\', \'test_sc\' );
function test_sc( $atts ){
$content = apply_filters( \'the_content\',\'$\\frac{15}{5} = 3$\' );
return do_shortcode(wpautop($content));
}
最后,此代码来自
Shortcode Empty Paragraph Fix
插件
add_shortcode( \'test\', \'test_sc\' );
function test_sc( $atts ){
return apply_filters( \'the_content\',\'$\\frac{15}{5} = 3$\' );
}
add_filter( \'the_content\', \'shortcode_empty_paragraph_fix\' );
function shortcode_empty_paragraph_fix( $content ) {
// define your shortcodes to filter, \'\' filters all shortcodes
$shortcodes = array( \'test\' );
foreach ( $shortcodes as $shortcode ) {
$array = array (
\'<p>[\' . $shortcode => \'[\' .$shortcode,
\'<p>[/\' . $shortcode => \'[/\' .$shortcode,
$shortcode . \']</p>\' => $shortcode . \']\',
$shortcode . \']<br />\' => $shortcode . \']\'
);
$content = strtr( $content, $array );
}
return $content;
}
在前面的所有情况下,显示的是
如何解决这个问题?