WooCommerce本身没有设置fresh_site
到0
直接(字符串fresh_site
不会出现在WooCommerce的源代码中),但您可以正确地知道,这是因为WooCommerce正在创建页面。
WordPress将网站设置为不刷新(从wp-includes/default-filters.php
):
// Mark site as no longer fresh
foreach ( array( \'publish_post\', \'publish_page\', \'wp_ajax_save-widget\', \'wp_ajax_widgets-order\', \'customize_save_after\' ) as $action ) {
add_action( $action, \'_delete_option_fresh_site\', 0 );
}
所以当WooCommerce创建页面时,
publish_page
被解雇,网站不再被视为新鲜。
遗憾的是,在安装向导完成时、在向导中完成任何步骤时,甚至在创建默认WooCommerce页面时,似乎都没有任何特定触发的挂钩。不过,我想我已经找到了一个解决办法。
整个WooCommerce安装向导都在管理页面上进行,?page=wc-setup
, 这是WooCommerce使用admin_init
挂钩,默认优先级为10
. 所以我们能做的就是admin_init
以较高的优先级(较低的数字),检查我们是否在WooCommerce向导中,如果是,请删除将站点设置为不新鲜的挂钩。这样,安装向导期间发生的任何事情都不会使站点不再新鲜:
function wpse_340803_keep_setup_wizard_fresh() {
if ( isset( $_GET[\'page\'] ) && \'wc-setup\' === $_GET[\'page\'] ) {
foreach ( array( \'publish_post\', \'publish_page\', \'wp_ajax_save-widget\', \'wp_ajax_widgets-order\', \'customize_save_after\' ) as $action ) {
remove_action( $action, \'_delete_option_fresh_site\', 0 );
}
}
}
add_action( \'admin_init\', \'wpse_340803_keep_setup_wizard_fresh\', 0 );
因为页面创建是在内部触发的
admin_init
优先考虑
10
, 作为安装向导的一部分
_delete_option_fresh_site
当页面创建时,不再被激活,这意味着站点在创建之后应该仍然是新鲜的。