Wordpress - 仅在一个页面上应用remove_filter

时间:2011-06-08 22:03:58

标签: wordpress

我在一个页面中插入多个页面(使用showmultiplepages插件),一个页面包含一个php文件(使用exec-php)。 我想仅为此包含的页面禁用过滤器。如果我添加

remove_filter( 'the_content', 'wpautop' );

到我的包含页面,此页面后面的任何页面都没有过滤器。

是否有一些像'the_page'这样的标签,以便只有页面没有过滤器?

感谢您的帮助。

4 个答案:

答案 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;
    }
}