如果我保存一篇没有内容/标题的帖子,WordPress会怎么做?

时间:2017-01-31 作者:Matthew

我已经为我的帖子类型创建了一些元数据库(作为主题的一部分)。元盒允许用户与tinyMCE的不同实例进行交互。一切都在正常工作,然而,我一辈子都不知道该用哪个钩子来发布一篇缺少标题/内容的文章。

我已经看过了/wp-includes/post.php 也没能找到我要找的东西。

我的问题是:当帖子缺少内容和标题时,单击“发布”会发生什么?我知道它会被创建并设置为“草稿”,但它不会运行save_post 钩我还想提一下,我曾尝试使用new_to_draft.

我尝试使用draft_post 但我假设,因为这可能是“自动草稿”,所以它可能不起作用(我也尝试过“auto-draft\\u post”)。

add_action( \'save_post\', array(__CLASS__, \'savePost\'));
static public function savePost($post_id) {
    echo \'hello\';
}

3 个回复
最合适的回答,由SO网友:cjbj 整理而成

自从solution mentioned here, WP已更新,现在允许您操作的保存过程wp_insert_post. 如果查看第3035至3057行(WP 4.7),检查空标题和内容的结果存储在$maybe_empty. 然后通过名为wp_insert_post_empty_content. 如果该过滤器返回的值为“true”,则保存过程将暂停。因此,您可以让它返回false来否决空值检查:

add_filter (\'wp_insert_post_empty_content\', function() { return false; });
Update. 请注意,帖子信息也会传递给过滤器,因此您可以编写更复杂的过滤器,例如在决定返回true或false之前检查帖子类型,或者在标题上施加最大长度,等等。

SO网友:Tunji

实际上,您可以通过使用save_post 钩子,您确实需要添加帖子互动程序,尽管WordPress使用它为帖子创建永久链接:

add_action( \'save_post\', \'wpse254636_save_without_content_title\', 10, 2 );

function wpse254636_save_without_content_title ( $post_id, $post ){
    //This temporarily removes action to prevent infinite loops
    remove_action( \'save_post\', \'wpse254636_save_without_content_title\' );

    if ( \'post\' !== $post->post_type )
        return;

    //Get your custom title
    $post_title = \'your custom title here\';

    //UPDATE TITLE
    wp_update_post( array(
        \'ID\'         => $post_id,
        \'post_title\' => $post_title,
    ));

    //redo action
    add_action( \'save_post\', \'wpse254636_save_without_content_title\', 10, 2 );
}

SO网友:TheGcool

如果单击“发布而不显示文章标题”。它将被发布。这可能对你的追求没有帮助。

相关推荐

WooCommerce在Orders列表的Bulk Actions下拉列表中添加一个新的Bulk Actions

我试图在WooCommerce订单列表中添加一个自定义批量操作,这将是我为单个订单编写的一段代码,但需要使其递归工作。我知道:Custom bulk_action 但它指的是wordpress批量操作菜单,而不是专门针对woocommerce的。你能帮我在我的woocommerce订单列表插件中运行它吗?此外,我还对如何在添加该操作后扫描要检查的订单并仅对所选订单应用批量操作感到有点困惑。