【问题标题】:How do I remove auto paragraph formatting for pages ONLY, and not posts (WordPress)如何仅删除页面的自动段落格式,而不是帖子(WordPress)
【发布时间】:2014-12-21 14:42:43
【问题描述】:

我已经熟悉这个在 WordPress 中删除自动段落格式的小技巧了:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

...但是在 functions.php 中添加它会删除整个站点的段落。这不是我想要的,因为客户需要能够自己进行编辑(段落格式确实有助于他们在帖子中脱颖而出)。

自动段落插入特别具有破坏性的地方是在客户端的主页上,那里有 javascript sn-ps。因此,理想情况下,我想单独禁用此页面的自动 p 格式设置,或者在必要时禁用所有 页面,并且不理会帖子。

有什么想法吗?如果需要,我可以提供更多信息。

提前致谢!


编辑:

我尝试过的插件:Php Exec、Raw HTML、禁用 WordPress Autop、PS 禁用自动格式化、切换 wpautop

【问题讨论】:

  • 尝试将上述代码添加到functions.php和不同的主题页面,并尝试了各种似乎无法摆脱额外p标签的插件,包括Disable WordPress AutoP、Toggle AutoP、PHP exec ,以及其他一些。我假设它只是 funtions.php 中的几行 php 代码,我告诉 wordpress 只删除页面的自动格式设置,或者只删除一个页面?想法?

标签: php wordpress autoformatting


【解决方案1】:

您可以将自定义类别添加到所需页面,然后使用类别 ID 禁用 wp_autop

//no paragraph
function no_auto_paragraph( $atts ){

  $cats = get_the_category();
  $cat  = $cats[0]->cat_ID; 

  if ($cat == 7 ){ //in my case the category is 7
    remove_filter( 'the_content', 'wpautop' );
  }

}

add_action( 'wp_head', 'no_auto_paragraph' );

//no_auto_paragraph END

【讨论】:

    【解决方案2】:

    您应该能够使用is_page() 检查正在呈现的模板是否是一个页面,然后可以选择运行过滤器。我们挂钩到'wp_head',这样我们就可以在调用the_content 之前运行检查。

    例子:

    function remove_p_on_pages() {
        if ( is_page() ) {
            remove_filter( 'the_content', 'wpautop' );
            remove_filter( 'the_excerpt', 'wpautop' );
        }
    }
    add_action( 'wp_head', 'remove_p_on_pages' );
    

    【讨论】:

    • 我将此添加到我的functions.php 文件的底部并没有返回任何运气。我还尝试添加不同的代码来按 ID 抓取页面,但也没有运气:function remove_p_on_pages() { if (get_the_ID()==94) { remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' ); } } add_action( 'wp_head', 'remove_p_on_pages' );
    • 我已经测试了我的代码,它确实有效。它仅适用于真实页面。您可以选择将is_page 替换为is_front_page() 以仅在首页上运行。
    • 对不起,这对我不起作用。我打赌在另一个主题中它会工作得很好,因为代码看起来很可靠。我尝试添加is_front_page is_page 和其他一些,但它不起作用。唯一似乎正在经历的是原始的remove_filter 位。我也向主题开发人员发送了电子邮件,非常感谢您提供帮助,谢谢!
    • 原来的remove_filter 正在经历什么?您应该使用上述函数代替原始问题中的其他 remove_filter() 函数。祝你好运。
    • 是的,我这样做了 - 在尝试上面的新代码块 (is_page) 时,我删除了原来的 remove_filter() 行。我的意思是此时唯一的“修复”是使用 OP 中的原始代码,如您所知,这不是最佳的。再次发送,对于任何混淆抱歉。
    猜你喜欢
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多