WordPress Cron 每天更新 html 文件一次
WordPress Cron to update html file once a day
所以我刚刚意识到 WordPress Cron API 并且它非常适合我试图解决的任务。我需要 WordPress Cron 来更新我的多站点上的 html 文件。
--------
目标:
我想要实现的是在我的站点网络中,我需要主站点使用主题 A 的 child 主题,所有子站点都使用主题 B 的 child 主题。然后所有子站点都必须实现header 网站顶部的主站点,包括其样式、链接等。
--------
我一直在阅读 WordPress Cron 的工作原理,但我不知道如何处理我试图解决的这个任务。我想我需要创建一个 mu-plugin 并将我的 Cron 作业挂接到 Wordpress,大致如下所示:
register_activation_hook( __FILE__, 'plugin_job' );
function plugin_job(){
//Use wp_next_scheduled to check if the event is already scheduled
$timestamp = wp_next_scheduled( 'plugin_create_job' );
//If $timestamp == false schedule
if( $timestamp == false ){
//Schedule the event for right now, then to repeat daily using the hook
wp_schedule_event( time(), 'daily', 'plugin_create_job' );
}
}
//Hook our function
add_action( 'plugin_create_job', 'create_job' );
function create_job(){
//Generate html file from Mainsites header.php
}
我绝对可以使用一些指导和意见:-)
我会说这种方法使问题过于复杂,但如果您想通过 wp_cron 工作来完成,您正在寻找的方法是 file_get_contents and file_put_contents。
所以您需要使用 file_get_contents 将 header 文件转换为字符串,将该字符串保存为变量,然后使用 file_put_contents 将该字符串写入html 文件在你服务器的某处。
function create_job(){
//Generate html file from Mainsites header.php
$header_contents = file_get_contents( get_template_directory_uri() . '/header.php' );
//If the header contains any information write to file
if( $header_contents ) {
file_put_contents( 'path/to/html/file.html', $header_contents );
}
}
另外两点...wp_cron 非常糟糕,可能的话应该是 replaced with a real server CRON job。
另外,不要忘记在插件停用时破坏 cron 计划...
function myplugin_deactivation() {
wp_clear_scheduled_hook( 'plugin_create_job' );
}
register_deactivation_hook( __FILE__, 'myplugin_deactivation' );
或者只需删除所有 child 主题的 header.php 文件,然后对 get_header 的所有调用将从 parent 中检索 header.php
文件主题。
解决此问题的另一种方法是在 parent 主题的函数文件中创建一个函数,该函数仅输出主题 A 的主题 header 的内容...
function mysite_get_custom_header() {
return file_get_contents( get_theme_root_uri() . '/child-theme-A/header.php' );
}
然后将 Child 主题 B 中 get_header()
的所有实例替换为...
echo mysite_get_custom_header();
希望对您有所帮助
此致
段
所以我刚刚意识到 WordPress Cron API 并且它非常适合我试图解决的任务。我需要 WordPress Cron 来更新我的多站点上的 html 文件。
--------
目标:
我想要实现的是在我的站点网络中,我需要主站点使用主题 A 的 child 主题,所有子站点都使用主题 B 的 child 主题。然后所有子站点都必须实现header 网站顶部的主站点,包括其样式、链接等。
--------
我一直在阅读 WordPress Cron 的工作原理,但我不知道如何处理我试图解决的这个任务。我想我需要创建一个 mu-plugin 并将我的 Cron 作业挂接到 Wordpress,大致如下所示:
register_activation_hook( __FILE__, 'plugin_job' );
function plugin_job(){
//Use wp_next_scheduled to check if the event is already scheduled
$timestamp = wp_next_scheduled( 'plugin_create_job' );
//If $timestamp == false schedule
if( $timestamp == false ){
//Schedule the event for right now, then to repeat daily using the hook
wp_schedule_event( time(), 'daily', 'plugin_create_job' );
}
}
//Hook our function
add_action( 'plugin_create_job', 'create_job' );
function create_job(){
//Generate html file from Mainsites header.php
}
我绝对可以使用一些指导和意见:-)
我会说这种方法使问题过于复杂,但如果您想通过 wp_cron 工作来完成,您正在寻找的方法是 file_get_contents and file_put_contents。
所以您需要使用 file_get_contents 将 header 文件转换为字符串,将该字符串保存为变量,然后使用 file_put_contents 将该字符串写入html 文件在你服务器的某处。
function create_job(){
//Generate html file from Mainsites header.php
$header_contents = file_get_contents( get_template_directory_uri() . '/header.php' );
//If the header contains any information write to file
if( $header_contents ) {
file_put_contents( 'path/to/html/file.html', $header_contents );
}
}
另外两点...wp_cron 非常糟糕,可能的话应该是 replaced with a real server CRON job。
另外,不要忘记在插件停用时破坏 cron 计划...
function myplugin_deactivation() {
wp_clear_scheduled_hook( 'plugin_create_job' );
}
register_deactivation_hook( __FILE__, 'myplugin_deactivation' );
或者只需删除所有 child 主题的 header.php 文件,然后对 get_header 的所有调用将从 parent 中检索 header.php
文件主题。
解决此问题的另一种方法是在 parent 主题的函数文件中创建一个函数,该函数仅输出主题 A 的主题 header 的内容...
function mysite_get_custom_header() {
return file_get_contents( get_theme_root_uri() . '/child-theme-A/header.php' );
}
然后将 Child 主题 B 中 get_header()
的所有实例替换为...
echo mysite_get_custom_header();
希望对您有所帮助
此致
段