WordPress 主题更新提示实现方法

之前我曾经转载过一个类似的功能,但太复杂了,而且不是很实用,于是还是自己写了一个,支持远程文件的缓存,避免对速度的影响.

首先你要准备一个 JSON 文件,放到你的网站目录里,JSON 文件内容例子,代码如下:

{"Version":"1.0","text":"<p>这是要给用户说的话</p>"}

注意,一个值是最新主题的版本,版本是自动和当前用户主题的 style.css 里的版本进行对比,如果用户的主题不是最新版本就在后台的顶部显示第二个属性的内容,然后在 functions.php 里放下边的代码:

  1. $theme_update_json = 'http://www.phpfensi.com /update.json';//注意你的地址
  2. define( 'theme_update_json', $theme_update_json );
  3. $themefolder = strtolower( wp_get_theme() );
  4. define( 'theme_folder', $themefolder );
  5. $theme_update_json_path = TEMPLATEPATH . '/update.json';
  6. define( 'theme_update_json_path', $theme_update_json_path );
  7. function Bing_get_update_json(){
  8. $fp = @file_get_contents( theme_update_json, 'r' );
  9. if( !$fp ) return;
  10. file_put_contents( theme_update_json_path, $fp );
  11. }
  12. add_action( 'theme_' . theme_folder . '_update', 'Bing_get_update_json' );
  13. function Bing_theme_version_compare(){
  14. global $update_json;
  15. if( !file_exists( theme_update_json_path ) ) return false;
  16. $theme_data = wp_get_theme();
  17. $update_json = @file_get_contents( theme_update_json_path, 'r' );
  18. $update_json = json_decode( $update_json, true );
  19. if( version_compare( $update_json['Version'], $theme_data['Version'], '>' ) ) return true;
  20. return false;
  21. }
  22. function Bing_update_schedule_event(){
  23. global $pagenow;
  24. if( $pagenow == 'themes.php' && isset( $_GET['activated'] ) && !wp_next_scheduled( 'theme_' . theme_folder . '_update' ) ) wp_schedule_event( current_time( 'timestamp' ), 'daily', 'theme_' . theme_folder . '_update' );
  25. }
  26. add_action( 'load-themes.php', 'Bing_update_schedule_event' );
  27. function Bing_notices_update(){
  28. if( !Bing_theme_version_compare() ) return;
  29. global $update_json;
  30. echo '<div class="updated fade">' . $update_json['text'] . '</div>';
  31. }
  32. add_action( 'admin_notices', 'Bing_notices_update' );

注意修改成你的 JSON 文件地址,每一天去服务器下载一次你的最新 JSON 文件保存到本地.