如何获取 WordPress 帖子的默认内容?

Posted

技术标签:

【中文标题】如何获取 WordPress 帖子的默认内容?【英文标题】:How can I get the default content of WordPress post? 【发布时间】:2015-10-13 02:55:54 【问题描述】:

有没有办法让我在 WordPress 帖子中获得 the_content 的默认输出?一些插件使用 add_filter 到内容来添加他们想要的结果,比如相关的帖子插件,他们在帖子内容的末尾添加结果。我想要做的是获得 WordPress 核心的默认格式化功能,而不需要来自其他插件的任何额外过滤器。

【问题讨论】:

我认为你可以通过$post->post_content 获得原始内容,如果这是你所要求的。 如果我使用它,我只会得到来自数据库的纯文本。结果很可能只是一个纯文本。 【参考方案1】:

您可以使用删除过滤功能。

remove_filter( $tag, $function_to_remove, $priority );

更多内容请参考以下链接

https://codex.wordpress.org/Function_Reference/remove_filter

【讨论】:

是的,我绝对可以使用它,但它不会是动态的。我的意思是每次您安装一个插件时,我需要手动使用删除过滤器的内容添加过滤器。我想要一个动态函数,它只能从 WordPress 获取格式化函数。 @user1645213 你可以试试这个// when the init hook fires add_action( 'init', 'sillo_remove_that_filter' ); function sillo_remove_that_filter() // remove the filter remove_filter( 'the_content', 'first_paragraph' ); 把remove_filter函数放在function.php文件中,从漏洞站点移除。【参考方案2】:

您可以使用the_content过滤器本身来获取帖子对象或内容,您可以对其进行修改,也可以根据您的要求取消钩子并再次钩子。

如果我了解您的要求,link 会帮助您,如果您需要不同的东西,请询问我。

【讨论】:

您是指在 the_content 中插入其他内容吗?我想要一个动态函数,它只能从 WordPress 获取默认格式化函数 哦!抱歉,请让我知道您是要引用任何特定函数还是函数中的主查询。 由于对引用 remove_filter 的答案表示赞成,您是否尝试通过在稍后的优先级上添加相同的过滤器来实现您想要实现的目标。 是的,这绝对可以工作,但每次添加具有将过滤器添加到 the_content 的功能的插件时,您总是需要手动创建删除过滤器。我真正想要实现的是让 the_content 没有来自其他插件或自定义代码的任何 add_filters,只是来自 WordPress 的默认结果 你试过使用pre_get_posts 吗?请告诉我。【参考方案3】:

大家感谢您回答我的问题,我想我以某种方式得到了它,但需要进行更多测试。我所做的是我复制了 WordPress 的 the_content() 功能如何工作的过程。根据我的研究,您可以在此链接上看到 10 个来自 WordPress 核心的默认过滤器:read here

我刚刚从 WordPress 创建了自己的函数,例如 the_content(),并将默认过滤器应用于我自己的函数。将此代码放在您的functions.php中

if(!function_exists(default_post_content))
    function default_post_content( $more_link_text = null, $strip_teaser = false) 
        $content = get_the_content( $more_link_text, $strip_teaser );
        $content = apply_filters( 'default_post_content', $content );
        $content = str_replace( ']]>', ']]>', $content );

        echo do_shortcode($content);
    

    add_filter( 'default_post_content', array( $wp_embed, 'run_shortcode' ), 8 );
    add_filter( 'default_post_content', array( $wp_embed, 'autoembed'), 8 );
    add_filter ( 'default_post_content', 'wptexturize');
    add_filter ( 'default_post_content', 'convert_smilies');
    add_filter ( 'default_post_content', 'convert_chars');
    add_filter ( 'default_post_content', 'wpautop');
    add_filter ( 'default_post_content', 'shortcode_unautop');
    add_filter ( 'default_post_content', 'prepend_attachment'); 

然后,例如在您的单页模板(single.php)中,我可以使用我的函数default_post_content();,而不是使用通常的 the_content。现在我不需要担心任何为the_content() 函数创建额外数据的插件。

【讨论】:

以上是关于如何获取 WordPress 帖子的默认内容?的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 自定义帖子类型分类 - 获取特定内容

如何在 wordpress 中以编程方式显示自定义帖子类型的图像缩略图。?

获取自定义帖子而不是默认的 Wordpress 帖子

从WordPress小部件获取数据以修改帖子内容

如何在WordPress中获取帖子作者姓名?

Wordpress 如何仅获取自定义帖子类型的父帖子