WordPress Gutenberg在发布更新时获取页面模板值?

时间:2018-09-03 作者:David Labbe

我需要在保存帖子时获取页面模板名称。在save\\u post hook as中失败$_POST(\'page_template\') 不可用。Gutenberg通过REST API保存post并使用WP_REST_Post_Controller->handle_template 保存页面模板数据。就像我说的那样$_POST(\'page_template\') 在save\\u post中可用。它看起来也像WP_REST_Post_Controller->handle_template 之后发生火灾save_post 钩我需要找到一种方法来检查正在保存的页面模板,以便在需要时更改正在保存的值。谢谢

1 个回复
SO网友:David Labbe

所以我找到了一个解决方案。根据具体需要,可以使用4个挂钩来完成此操作。挂钩来自wp-includes/meta.php 在函数中update_metadata()add_metadata().

挂钩:update_postmetaupdated_postmetaadd_post_metaadded_post_meta

这些都是在不同的州被调用的,从名称来看,这是不言而喻的。add_post_metaupdate_postmeta 在任何DB更改之前调用,并且updated_postmetaadded_post_meta 在数据库发生任何更改后立即调用。

示例:

//Example usage for updated and added.
 function page_template_check( $meta_id, $post_id, $meta_key, $meta_value ) {

    // Stop if not the correct meta key
    if ( $meta_key != \'_wp_page_template\' ) {
        return false;
    }

    //Do stuff here

};

add_action( \'added_post_meta\', \'page_template_check\', 10, 4 ); //after add
add_action( \'updated_postmeta\', \'page_template_check\', 10, 4 ); //after update

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x