所以我刚刚实现了WordPress Cron API,它非常适合我试图解决的任务。我需要WordPress Cron更新我的Multisite上的html文件。
--------
目标:
我想要实现的是在我的网站我需要主网站使用主题A的子主题和所有子网站使用主题B的子主题。然后所有子网站必须在顶部实现主站点的标题该网站,包括其样式,链接等。
--------
我一直在阅读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
}
我绝对可以使用一些指导和输入: - )
答案 0 :(得分:2)
我想说这个方法让问题过于复杂,但如果你想通过wp_cron工作来完成,那么你要找的方法是file_get_contents和file_put_contents。
因此,您需要使用file_get_contents将头文件转换为字符串,将该字符串保存为变量,然后使用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' );
或者只是删除所有子主题的header.php文件,然后所有对get_header的调用都将从父主题中检索header.php
文件。
另一种解决方法是在父主题的函数文件中创建一个函数,它只输出主题A的主题标题的内容......
function mysite_get_custom_header() {
return file_get_contents( get_theme_root_uri() . '/child-theme-A/header.php' );
}
然后将子主题B中的get_header()
的所有实例替换为...
echo mysite_get_custom_header();
希望有所帮助
此致
丹