不在页面模板上添加内容筛选器

时间:2015-02-14 作者:JoaMika

我不想让我的主题在页面模板上加载函数。

这是正确的语法吗add_filter(\'the_content\', \'oswc_formatter\', 99);add_filter 而不是我所做的这是我的代码:

function oswc_formatter($content) {
if( !is_page_template( \'template-flat.php\' ) ) {    
    $new_content = \'\';

    /* Matches the contents and the open and closing tags */
    $pattern_full = \'{(\\[raw\\].*?\\[/raw\\])}is\';

    /* Matches just the contents */
    $pattern_contents = \'{\\[raw\\](.*?)\\[/raw\\]}is\';

    /* Divide content into pieces */
    $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

    /* Loop over pieces */
    foreach ($pieces as $piece) {
        /* Look for presence of the shortcode */
        if (preg_match($pattern_contents, $piece, $matches)) {

            /* Append to content (no formatting) */
            $new_content .= $matches[1];
        } else {

            /* Format and append to content */
            $new_content .= wptexturize(wpautop($piece));
        }
    }

    return $new_content;
    }
}

// Before displaying for viewing, apply this function
add_filter(\'the_content\', \'oswc_formatter\', 99);
add_filter(\'widget_text\', \'oswc_formatter\', 99);

2 个回复
SO网友:JoaMika

好的,这是答案。。pheww公司

function oswc_formatter($content) {
if( is_page_template( \'template-flat.php\' ) ) { 
return $content;
}else{
    $new_content = \'\';

    /* Matches the contents and the open and closing tags */
    $pattern_full = \'{(\\[raw\\].*?\\[/raw\\])}is\';

    /* Matches just the contents */
    $pattern_contents = \'{\\[raw\\](.*?)\\[/raw\\]}is\';

    /* Divide content into pieces */
    $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

    /* Loop over pieces */
    foreach ($pieces as $piece) {
        /* Look for presence of the shortcode */
        if (preg_match($pattern_contents, $piece, $matches)) {

            /* Append to content (no formatting) */
            $new_content .= $matches[1];
        } else {

            /* Format and append to content */
            $new_content .= wptexturize(wpautop($piece));
        }
    }

    return $new_content;
    }
}

SO网友:mathieuhays

不确定您是否使用插件,但如果使用插件,则不建议编辑它,因为您的更改将在下次更新时被覆盖。

另一种在条件下停用过滤器的方法是:

if( is_page_template( \'template-flat.php\' ) ){
    remove_filter( \'the_content\', \'oswc_formatter\');
    remove_filter( \'widget_text\', \'oswc_formatter\');
}
过滤器上的99是优先级。它越低,执行得越早。因此,这里的过滤器将作为最新的过滤器之一执行。

结束

相关推荐

jquery issue in functions.php

我正在处理的主题中有一个问题,我不知道如何解决它。该主题有几个jquery脚本,需要加载到头部才能工作。如果没有所有这些,主题就失败了。这是我打电话给的人jquery-1.8.2。最小jsjquery-1.6.1。min.jsjquery。放松。1.3。jsjquery-ui-1.8.11。风俗min.jsjquery-ui-1.8.21。风俗最小js现在使用WordPress,我想您可以将jquery排队,然后加载所有版本。我的问题是,当我尝试这样做并删除上面的脚本时,一切都失败了。我将所有脚本放入函数