我在一个页面中插入多个页面(使用showmultiplepages插件),一个页面包含一个php文件(使用exec-php)。 我想仅为此包含的页面禁用过滤器。如果我添加
remove_filter( 'the_content', 'wpautop' );
到我的包含页面,此页面后面的任何页面都没有过滤器。
是否有一些像'the_page'这样的标签,以便只有页面没有过滤器?
感谢您的帮助。
答案 0 :(得分:11)
我知道这是一个老问题,但我想我会为那些想要在更广泛的意义上做这件事的人(例如不与插件输出结合)说话,并说你也可以将它添加到你的functions.php
档案:
add_filter('the_content', 'specific_no_wpautop', 9);
function specific_no_wpautop($content) {
if (is_page('YOUR PAGE')) { // or whatever other condition you like
remove_filter( 'the_content', 'wpautop' );
return $content;
} else {
return $content;
}
}
答案 1 :(得分:5)
我建议为“一个页面包含一个php文件(使用exec-php)”创建一个页面模板。然后在remove_filter(...)语句周围添加一个if语句。
if (!is_page_template('my-page.php'))
remove_filter('the_content', 'wpautop');
希望它有效。 ; P
答案 2 :(得分:2)
像mroncetwice一样,我也意识到这是一个古老的问题;然而,当我看到他时,我来到这个线索寻找答案。我决定对其进行改进(根据我自己的情况而定)并分享结果,希望它也可以帮助其他人。
默认打开或关闭wpautop并列出任何例外情况:
/**
* Allow or remove wpautop based on criteria
*/
function conditional_wpautop($content) {
// true = wpautop is ON unless any exceptions are met
// false = wpautop is OFF unless any exceptions are met
$wpautop_on_by_default = true;
// List exceptions here (each exception should either return true or false)
$exceptions = array(
is_page_template('page-example-template.php'),
is_page('example-page'),
);
// Checks to see if any exceptions are met // Returns true or false
$exception_is_met = in_array(true, $exceptions);
// Returns the content
if ($wpautop_on_by_default==$exception_is_met) {
remove_filter('the_content','wpautop');
return $content;
} else {
return $content;
}
}
add_filter('the_content', 'conditional_wpautop', 9);
答案 3 :(得分:-3)
不起作用?
add_filter('the_content', 'specific_no_wpautop', 9);
function specific_no_wpautop($content) {
global $post;
if (is_sangle('5136') || ('3820')){ // or whatever other condition you like
remove_filter( 'the_content', 'wpautop' );
return $content;
} else {
return $content;
}
}