set_luxe_variable(); $optimize = new thk_optimize(); $optimize->css_optimize( $optimize->css_optimize_init(), 'style.min.css', true ); $optimize->css_async_optimize( $optimize->css_async_optimize_init(), true ); //$optimize->js_async_optimize(); $optimize->js_search_highlight(); thk_create_template_style(); thk_create_editor_style(); thk_create_luxeritas_adminbar_script(); thk_create_manifest(); thk_create_service_worker(); if( isset( $luxe['amp_enable'] ) ) { thk_create_amp_style(); } // jQuery 使用しないならここで終わり (同梱の Javascript が全て jQuery 依存なので、これ以降の処理は意味ない) // ver3.6.12 からスクリプトの中身を大幅に変更( 脱 jQUery 加速 )したので処理継続 //if( $luxe['jquery_load'] === 'none' ) return; $optimize->javascript_optimize(); $optimize->jquery_optimize(); return; } add_action( 'customize_save_after', 'thk_compress', 75 ); endif; /*--------------------------------------------------------------------------- * 親テーマのスタイルシートを子テーマに結合 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_parent_css_bind' ) === false ): function thk_parent_css_bind() { global $luxe, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $parent_css = TPATH . DSEP . 'style.min.css'; $child_css = SPATH . DSEP . 'style.css'; $child_min = SPATH . DSEP . 'style.min.css'; $css = ''; $parent = ''; $child = ''; if( is_child_theme() === false || get_theme_admin_mod( 'all_clear', false ) === true || $luxe['child_css_compress'] === 'none' ) { return; } elseif( $luxe['child_css_compress'] !== 'bind' ) { return thk_child_css_min( '' ); } if( file_exists( $parent_css ) === true ) { $parent = $wp_filesystem->get_contents( $parent_css ); if( !isset( $luxe['css_to_style'] ) ) { // 親子 CSS 結合してて、且つ CSS を HTML に埋め込んでない場合の icomoon のパス変換処理 // ver 3.19.0 以降、子テーマでのアイコンフォント内蔵をやめたので必要 $parent_path = substr( TURI, 0 - ( strlen( TURI ) - strrpos( TURI, '/' ) ) ); $parent = str_replace( './fonts/icomoon/fonts/icomoon', '../' . $parent_path . '/fonts/icomoon/fonts/icomoon', $parent ); } } if( file_exists( $child_css ) === true ) $child = $wp_filesystem->get_contents( $child_css ); // ハッシュ haval256,5 $css = trim( $parent ) . '8541c0962b1d2ee295cd6d115b4e2b4ea803b0cb0cab40f64beddb80d59ad6d8' . trim( $child ); return thk_child_css_min( $css ); } add_action( 'customize_save_after', 'thk_parent_css_bind', 80 ); endif; /*--------------------------------------------------------------------------- * 子テーマの CSS 圧縮・最適化 (カスタマイズ画面のプレビューでは圧縮されてない方を読み込む) *---------------------------------------------------------------------------*/ if( function_exists( 'thk_child_css_min' ) === false ): function thk_child_css_min( $css = '' ) { global $luxe, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $style_min = SPATH . DSEP . 'style.min.css'; if( empty( $css ) ) { $style_css = SPATH . DSEP . 'style.css'; $css = $wp_filesystem->get_contents( $style_css ); } $css = thk_cssmin( $css, true ); $css = str_replace( '8541c0962b1d2ee295cd6d115b4e2b4ea803b0cb0cab40f64beddb80d59ad6d8', "\n/*! luxe child css */", $css ); $filesystem->file_save( $style_min, $css ); return; } endif; /*--------------------------------------------------------------------------- * 子テーマの Javascript を圧縮・結合 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_child_js_comp' ) === false ): function thk_child_js_comp() { global $luxe, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; if( is_child_theme() === false || $luxe['child_js_compress'] === 'none' || $luxe['child_js_compress'] === 'noload' ) { $child_min = SPATH . DSEP . 'luxech.min.js'; if( file_exists( $child_min ) === true ) { if( $wp_filesystem->delete( $child_min ) === false ) { $filesystem->file_save( $child_min, null ); } } return; } $js = ''; $child_js = SPATH . DSEP . 'luxech.js'; if( file_exists( $child_js ) === true ) { $js .= $wp_filesystem->get_contents( $child_js ); $js .= "\n"; } $files = array(); if( isset( $luxe['child_js_file_1'] ) ) $files[] = $luxe['child_js_file_1']; if( isset( $luxe['child_js_file_2'] ) ) $files[] = $luxe['child_js_file_2']; if( isset( $luxe['child_js_file_3'] ) ) $files[] = $luxe['child_js_file_3']; foreach( (array)$files as $value ) { if( strpos( $value, DSEP ) !== false || strpos( $value, '/' ) !== false ) continue; if( file_exists( SPATH . DSEP . $value . '.js' ) === true ) { $js .= $wp_filesystem->get_contents( SPATH . DSEP . $value . '.js' ); $js .= "\n"; } } $js = thk_jsmin( $js ); $filesystem->file_save( SPATH . DSEP . 'luxech.min.js', $js ); return ; } add_action( 'customize_save_after', 'thk_child_js_comp', 80 ); endif; /*--------------------------------------------------------------------------- * CSS をインラインで直接読み込む場合用の PATH 置換済み CSS を生成 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_create_inline_style' ) === false ): function thk_create_inline_style() { global $luxe, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $styles = array( TPATH . DSEP . 'style.css' => '', TPATH . DSEP . 'style.min.css' => '', SPATH . DSEP . 'style.css' => '', SPATH . DSEP . 'style.min.css' => '' ); if( $luxe['child_css_compress'] !== 'bind' || TPATH === SPATH ) { if( isset( $luxe['parent_css_uncompress'] ) ) { $styles[TPATH . DSEP . 'style.css'] = TPATH . DSEP . 'style.replace.min.css'; } else { $styles[TPATH . DSEP . 'style.min.css'] = TPATH . DSEP . 'style.replace.min.css'; } } if( isset( $luxe['child_css'] ) && TPATH !== SPATH ) { if( $luxe['child_css_compress'] !== 'none' ) { $styles[SPATH . DSEP . 'style.min.css'] = SPATH . DSEP . 'style.replace.min.css'; } else { $styles[SPATH . DSEP . 'style.css'] = SPATH . DSEP . 'style.replace.min.css'; } } foreach( $styles as $in => $out ) { if( empty( $out ) ) continue; if( isset( $luxe['css_to_style'] ) ) { $conf = new defConfig(); $save = ''; $save = $wp_filesystem->get_contents( $in ); if( stripos( $in, TPATH . DSEP ) !== false ) { $save = thk_path_to_root( $save, TDEL ); } else { $save = thk_path_to_root( $save, SDEL ); } $save = str_replace( '@charset "UTF-8";', '', $save ); if( $filesystem->file_save( $out, $save ) === false ) return false; } } return true; } add_action( 'customize_save_after', 'thk_create_inline_style', 85 ); endif; /*--------------------------------------------------------------------------- * Amp 用 CSS 生成 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_create_amp_style' ) === false ): function thk_create_amp_style() { global $luxe, $wp_filesystem; $optimize = new thk_optimize(); $contents = $optimize->css_amp_optimize( $optimize->css_amp_optimize_init(), true ); $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $save = ''; foreach( (array)$contents as $key => $val ) { $save .= $val; } // design file css $save .= thk_read_design_style( 'style-amp.css' ); // 管理画面でのカスタマイズ内容 $luxe['amp_css'] = true; if( $luxe['column_style'] === '3column' ) { $luxe['column_style'] = '2column'; } $css = trim( str_replace( array( '' ), '', thk_custom_css() ) ); if( $css === '/*! luxe customizer css */' ) { $save .= ''; } else { $css = str_replace( '/*! luxe customizer css */' . "\n", '/*! luxe customizer css */', $css ); $css = str_replace( '!important', '', $css ); $save .= $css; } $save = thk_path_to_root( $save, TDEL ); $save = str_replace( '@charset "UTF-8";', '', $save ); $save = thk_cssmin( $save, true ); if( $filesystem->file_save( TPATH . DSEP . 'style-amp.min.css', $save ) === false ) return false; if( TDEL !== SDEL ) { $save = str_replace( '../', './', $wp_filesystem->get_contents( SPATH . DSEP . 'style-amp.css' ) ); $save = thk_path_to_root( $save, SDEL ); $save = thk_cssmin( $save ); $save = "/*! luxe child css */" . trim( $save ); if( $filesystem->file_save( SPATH . DSEP . 'style-amp.min.css', $save ) === false ) return false; } return true; } add_action( 'customize_save_after', 'thk_create_amp_style', 100 ); endif; /*--------------------------------------------------------------------------- * Editor CSS 生成 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_create_editor_style' ) === false ): function thk_create_editor_style() { global $luxe, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $save = ''; $org = ''; if( function_exists( 'thk_custom_css' ) === false ) { require_once( INC . 'files.php' ); require_once( INC . 'custom-css.php' ); } if( isset( $luxe['luxe_mode_select'] ) ) { $mode_css_file = ''; $thk_files = new thk_files(); $files = $thk_files->styles(); if( $luxe['luxe_mode_select'] === 'bootstrap' ) { $mode_css_file = $files['bootstrap']; } elseif( $luxe['luxe_mode_select'] === 'bootstrap4' ) { $mode_css_file = $files['bootstrap4']; } else { $mode_css_file = $files['luxe-mode']; } } else { $mode_css_file = $files['luxe-mode']; } $org .= $wp_filesystem->get_contents( $mode_css_file ); // balloon css $contents = $wp_filesystem->get_contents( $files['balloon'] ); require_once( INC . 'balloon-css-replace.php' ); $org .= $contents; //$org .= $wp_filesystem->get_contents( TPATH . DSEP . 'style.css' ); $org .= $wp_filesystem->get_contents( TPATH . DSEP . 'editor-style.css' ); $org .= thk_custom_css(); if( TPATH !== SPATH ) { if( isset( $luxe['design_file'] ) ) { $design_css = 'design' . DSEP . $luxe['design_file'] . DSEP . 'style.css'; $design_editor_css = 'design' . DSEP . $luxe['design_file'] . DSEP . 'editor-style.css'; if( file_exists( SPATH . DSEP . $design_css ) === true ) { $org .= $wp_filesystem->get_contents( SPATH . DSEP . $design_css ); } if( file_exists( SPATH . DSEP . $design_editor_css ) === true ) { $org .= $wp_filesystem->get_contents( SPATH . DSEP . $design_editor_css ); } } } if( TPATH !== SPATH ) { $org .= $wp_filesystem->get_contents( SPATH . DSEP . 'style.css' ); } $org = thk_cssmin( $org, true ); if( TPATH !== SPATH ) { $save .= $wp_filesystem->get_contents( SPATH . DSEP . 'editor-style.css' ); } $save .= <<file_save( $path . DSEP . 'editor-style.min.css', $save ) === false ) return false; /* * Gutenberg 用 CSS 生成 */ $save = ''; $webfont = new Create_Web_Font(); $font_arr = $webfont->create_web_font_stylesheet(); if( isset( $font_arr['font_family'] ) ) $font_family = $font_arr['font_family']; // 最大幅を実際のブログのコンテンツ幅に近づける $max_width = '100%'; if( isset( $luxe['container_max_width'] ) && $luxe['container_max_width'] !== 0 ) { $max_width = (int)$luxe['container_max_width']; if( isset( $luxe['column_style'] ) && ( $luxe['column_style'] === '2column' || $luxe['column_style'] === '3column' ) ) { if( isset( $luxe['side_1_width'] ) && $luxe['side_1_width'] !== 0 ) { $max_width -= (int)$luxe['side_1_width']; } if( $luxe['column_style'] === '3column' && isset( $luxe['side_2_width'] ) && $luxe['side_2_width'] !== 0 ) { $max_width -= (int)$luxe['side_2_width']; } } if( isset( $luxe['cont_padding_left'] ) && $luxe['cont_padding_left'] !== 0 ) { $max_width -= (int)$luxe['cont_padding_left']; } if( isset( $luxe['cont_padding_right'] ) && $luxe['cont_padding_right'] !== 0 ) { $max_width -= (int)$luxe['cont_padding_right']; } } if( $max_width !== '100%' ) { if( $max_width < 610 ) $max_width = 610; // Gutenberg のデフォルト max-width: 610px より小さくはしない $max_width .= 'px'; } $line_height = isset( $luxe['p_line_height'] ) ? $luxe['p_line_height'] : '1.9'; /* $font_size_post = isset( $luxe['font_size_post'] ) ? $luxe['font_size_post'] : '16'; $font_size_post_h2 = isset( $luxe['font_size_post_h2'] ) ? $luxe['font_size_post_h2'] : '24'; $font_size_post_h3 = isset( $luxe['font_size_post_h3'] ) ? $luxe['font_size_post_h3'] : '22'; $font_size_post_h4 = isset( $luxe['font_size_post_h4'] ) ? $luxe['font_size_post_h4'] : '18'; $font_size_post_h5 = isset( $luxe['font_size_post_h5'] ) ? $luxe['font_size_post_h5'] : '16'; $font_size_post_h6 = isset( $luxe['font_size_post_h6'] ) ? $luxe['font_size_post_h6'] : '16'; $font_size_post_li = isset( $luxe['font_size_post_li'] ) ? $luxe['font_size_post_li'] : '14'; $font_size_post_pre = isset( $luxe['font_size_post_pre'] ) ? $luxe['font_size_post_pre'] : '14'; $font_size_post_blockquote = isset( $luxe['font_size_post_blockquote'] ) ? $luxe['font_size_post_blockquote'] : '14'; */ $save .= <<file_save( TPATH . DSEP . 'editor-style-gutenberg.min.css', $save ) === false ) return false; return true; } add_action( 'customize_save_after', 'thk_create_editor_style', 110 ); endif; /*--------------------------------------------------------------------------- * manifest 生成 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_create_manifest' ) === false ): function thk_create_manifest() { global $luxe, $_is, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $file = THK_HOME_PATH . 'luxe-manifest.json'; if( isset( $luxe['pwa_enable'] ) || isset( $luxe['pwa_manifest'] ) ) { if( wp_is_writable( THK_HOME_PATH ) === true ) { if( file_exists( $file ) === true && wp_is_writable( $file ) === false ) { if( $_is['admin'] === true ) { add_settings_error( 'luxe-custom', 'manifest', _is_writable_error_msg( $file, false ), 'error' ); } } else { if( class_exists( 'create_pwd_files' ) === false ) { require( INC . 'create-pwd-files.php' ); } $create = new create_pwd_files(); $save = $create->create_manifest(); if( $filesystem->file_save( $file, $save ) === false ) return false; } } else { if( $_is['admin'] === true ) { add_settings_error( 'luxe-custom', 'manifest', _is_writable_error_msg( THK_HOME_PATH, false ), 'error' ); } } if( isset( $luxe['pwa_dynamic_files'] ) ) { if( file_exists( $file ) === true ) $wp_filesystem->delete( $file ); } } else { if( file_exists( $file ) === true ) $wp_filesystem->delete( $file ); } } endif; /*--------------------------------------------------------------------------- * service worker 生成 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_create_service_worker' ) === false ): function thk_create_service_worker() { global $luxe, $_is, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $sw_file = THK_HOME_PATH . 'luxe-serviceworker.js'; $swr_file = TPATH . DSEP . 'js' . DSEP . 'luxe-serviceworker-regist.js'; if( isset( $luxe['pwa_enable'] ) && $_is['ssl'] === true ) { $credit = '/*! Service Worker script for Wordpress Luxeritas Theme */' . "\n"; if( wp_is_writable( THK_HOME_PATH ) === true ) { if( file_exists( $sw_file ) === true && wp_is_writable( $sw_file ) === false ) { if( $_is['admin'] === true ) { add_settings_error( 'luxe-custom', 'serviceworker', _is_writable_error_msg( $sw_file, false ), 'error' ); } } else { if( class_exists( 'create_pwd_files' ) === false ) { require( INC . 'create-pwd-files.php' ); } $create = new create_pwd_files(); $sw_save = $create->create_service_worker(); $sw_save = $credit . thk_jsmin( $sw_save ); if( $filesystem->file_save( $sw_file, $sw_save ) === false ) return false; if( file_exists( $swr_file ) === true && wp_is_writable( $swr_file ) === false ) { if( $_is['admin'] === true ) { add_settings_error( 'luxe-custom', 'serviceworker', _is_writable_error_msg( $swr_file, false ), 'error' ); } } else { $swr_save = $create->create_register_service_worker(); $swr_save = $credit . thk_jsmin( $swr_save ); if( $filesystem->file_save( $swr_file, $swr_save ) === false ) return false; } } } else { if( $_is['admin'] === true ) { add_settings_error( 'luxe-custom', 'serviceworker', _is_writable_error_msg( THK_HOME_PATH, false ), 'error' ); } } if( isset( $luxe['pwa_dynamic_files'] ) ) { if( file_exists( $sw_file ) === true ) $wp_filesystem->delete( $sw_file ); } } else { if( file_exists( $sw_file ) === true ) $wp_filesystem->delete( $sw_file ); if( file_exists( $swr_file ) === true ) $wp_filesystem->delete( $swr_file ); } } endif; /*--------------------------------------------------------------------------- * Read design file *---------------------------------------------------------------------------*/ if( function_exists('thk_read_design_style') === false ): function thk_read_design_style( $css_file_name ) { global $luxe, $wp_filesystem; $ret = ''; if( isset( $luxe['design_file'] ) ) { $design_file = SPATH . DSEP . 'design' . DSEP . $luxe['design_file'] . DSEP . $css_file_name; if( file_exists( $design_file ) === true ) { $design_style_contents = trim( $wp_filesystem->get_contents( $design_file ) ); if( !empty( $design_style_contents ) ){ // binary check if( stripos( $design_style_contents, chr(0x00) ) === false ) {; $ret .= '/*! luxe design file css */'; $design_style_contents = thk_path_to_root( $design_style_contents, SDEL . '/design/' . $luxe['design_file'] ); $ret .= $design_style_contents; } } unset( $design_style_contents ); } } return $ret; } endif; /*--------------------------------------------------------------------------- * create luxeritas adminbar script *---------------------------------------------------------------------------*/ if( function_exists( 'thk_create_luxeritas_adminbar_script' ) === false ): function thk_create_luxeritas_adminbar_script() { $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $save = TPATH . DSEP . 'js' . DSEP . 'ladmin.min.js'; require( INC . 'create-ladmin-script.php' ); $js = thk_jsmin( create_ladmin_script() ); if( $filesystem->file_save( thk_jsmin( $save ), $js ) === false ) return false; } endif; /*--------------------------------------------------------------------------- * thk_php_strip *---------------------------------------------------------------------------*/ if( function_exists('thk_php_strip') === false ): function thk_php_strip() { global $_is; if( $_is['admin'] === false ) { $cjphp = php_strip_whitespace( INC . 'create' . '-' . 'java' . 'script' . '.php' ); $cjphp = preg_replace( '/\/\*.+?\*\//ism', '', $cjphp ); $cjphp = preg_replace( '/\/\/.+?\n/im', '', $cjphp ); if( substr_count( $cjphp, '{$ins' . '_func}') < 5 ) thk_shutdown(); if( substr_count( $cjphp, '{$wt_' . 'txt[1]}') < 1 ) thk_shutdown(); } } endif; /*--------------------------------------------------------------------------- * CSS 内の相対パスをルートから始まるURIに変換する処理 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_path_to_root' ) === false ): function thk_path_to_root( $css, $theme_path ) { // url(data:~); url(http://~); url(https://~); の形を url のパス変換処理にかけないよう退避 preg_match_all( "/url\(\s*([\"|']?)(data\:|http\:\/\/|https\:\/\/)[^\)]+?\)[^;|\}]*?[;|\}]/i", $css, $data_array ); foreach( array_unique( $data_array[0] ) as $data ) { $css = str_replace( $data, strlen( $data ) . md5( $data ), $css ); } // css 内で ../ の形式で書かれた相対パスをルートから始まるURIに変換する $css_dir = str_replace( '//' . $_SERVER['HTTP_HOST'], '', $theme_path ); $dir_explode = array_filter( explode( '/', $css_dir ) ); $relative = ''; $relative_array = array(); foreach( $dir_explode as $val ) { $relative .= '/' . $val; $relative_array = array_merge( $relative_array, array( $relative => null ) ); } $sep = ''; $tmp_array = array(); foreach( array_reverse( $relative_array ) as $key => $val ) { $tmp_array = array_merge( $tmp_array, array( $key => $sep ) ); $sep .= '../'; } $path = ''; $relative_array = array_reverse( $tmp_array ); foreach( $relative_array as $path => $val ) { $css = str_replace( $val, $path . '/', $css ); } $css = str_replace( './', '', $css ); // css 内で ../ の形式以外の相対パスをルートから始まるURIに変換する $css = preg_replace( "/(url\([\"|']?)((?:[^\/][A-z0-9]|\.\/).+?)([\"|']*\))/i", '${1}' . $path . '/' . '${2}${3}', $css ); // icomoon を子のパスから親のパスに変換する if( TPATH !== SPATH ) { $curent = substr( SURI, 0 - ( strlen( SURI ) - strrpos( SURI, '/' ) ) ); $parent = substr( TURI, 0 - ( strlen( TURI ) - strrpos( TURI, '/' ) ) ); $css = str_replace( $curent . '/fonts/icomoon/fonts/icomoon', $parent . '/fonts/icomoon/fonts/icomoon', $css ); } // url(data:~); url(http://~); url(https://~); の形を元に戻す foreach( array_unique( $data_array[0] ) as $data ) { $css = str_replace( strlen( $data ) . md5( $data ), $data, $css ); } return $css; } endif; /*--------------------------------------------------------------------------- * テンプレートごとにカラム数が違う場合の3カラム用 CSS 生成 *---------------------------------------------------------------------------*/ if( function_exists( 'thk_create_template_style' ) === false ): function thk_create_template_style() { global $luxe, $wp_filesystem; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; $styles = array( '1column' => 'style.1col.min.css', '2column' => 'style.2col.min.css', '3column' => 'style.3col.min.css' ); foreach( $styles as $key => $style ) { if( $luxe['column_home'] === '1column' || $luxe['column_post'] === '1column' || $luxe['column_page'] === '1column' || $luxe['column_archive'] === '1column' || $luxe['column_home'] === '3column' || $luxe['column_post'] === '3column' || $luxe['column_page'] === '3column' || $luxe['column_archive'] === '3column' || ( $luxe['column3'] === '1column' && ( $luxe['column_home'] !== 'default' || $luxe['column_post'] !== 'default' || $luxe['column_page'] !== 'default' || $luxe['column_archive'] !== 'default' ) ) || ( $luxe['column3'] === '3column' && ( $luxe['column_home'] !== 'default' || $luxe['column_post'] !== 'default' || $luxe['column_page'] !== 'default' || $luxe['column_archive'] !== 'default' ) ) ) { require_once( INC . 'colors.php' ); $conf = new defConfig(); $colors_class = new thk_colors(); $defaults = $conf->default_variables(); $default_colors = $conf->over_all_default_colors(); $save = format_media_query( thk_adjust_column_css( array(), $key, $defaults, $default_colors, $colors_class ), $defaults ); if( $filesystem->file_save( TPATH . DSEP . $style, thk_cssmin( $save ) ) === false ) return false; } } return true; } endif; /*--------------------------------------------------------------------------- * CSS Compress *---------------------------------------------------------------------------*/ if( function_exists('thk_cssmin') === false ): function thk_cssmin( $css, $copyright = false ) { global $wp_filesystem; // get version number $ver = '1.00'; $curent = wp_get_theme(); $copyright_text = ''; if( TDEL !== SDEL ) { $parent = wp_get_theme( $curent->get('Template') ); $ver = $parent->get('Version'); } else { $ver = $curent->get('Version'); } $css = preg_replace( '/(\.woff|\.woff2|\.otf|\.eot|\.ttf|\.svg)\?[^\'|\)]+?([\'|\)])/ism', "$1$2", $css ); $css = trim( thk_simple_css_minify( thk_convert( $css ) ) ); if( substr_count( $css, '{' ) !== substr_count( $css, '}' ) ) { $css = "\n/*!*/" . $css; } else { if( class_exists('CSSminMinifier') === false ) { require( INC . 'cssmin.php' ); } $minify = new CSSminMinifier(); if( method_exists( $minify, 'run' ) === true ) { $css = trim( $minify->run( thk_convert( $css ) ) ); $css = str_replace( array( "\r\n", "\r", "\n" ), '', $css ); $css = str_replace( '/*!', "\n/*!", $css ); } } if( !empty( $css ) && $copyright === true ) { $copyright_text = <<< COPYRIGHT /*! Luxeritas WordPress Theme {$ver} - (C) 2015 Thought is free. */ COPYRIGHT; } return $copyright_text . $css; } endif; /*--------------------------------------------------------------------------- * Javascript Compress *---------------------------------------------------------------------------*/ if( function_exists('thk_jsmin') === false ): function thk_jsmin( $js ) { if( class_exists('JSMin') === false ) { require( INC . 'jsmin.php' ); } $js = trim( JSMin::minify( thk_convert( $js ) ) ); $js = str_replace( array("\r\n", "\r", "\n"), "\n", $js ); return $js; } endif; /*--------------------------------------------------------------------------- * delete theme_mod that is no longer necessary *---------------------------------------------------------------------------*/ if( function_exists('thk_empty_remove') === false ): function thk_empty_remove() { $conf = new defConfig(); $luxe_defaults = $conf->default_variables(); //$luxe_defaults = $conf->set_luxe_variable(); //$mods = get_theme_mods(); $mods = get_option( 'theme_mods_' . THEME ); if( is_array( $mods ) === true ) { foreach( $mods as $key => $val) { if( $val === null ) remove_theme_mod( $key ); if( ( array_key_exists( $key, $luxe_defaults ) === false && is_array( $val ) === false ) || ( array_key_exists( $key, $luxe_defaults ) === true && $luxe_defaults[$key] == $val ) ) { remove_theme_mod( $key ); } // theme_admin_mod に移行したので存在してたら消す(当面の間、残しとく) if( $key === 'thk_sidebars_widgets' ) { remove_theme_mod( $key ); } } } } add_action( 'customize_save_after', 'thk_empty_remove', 90 ); endif; /*--------------------------------------------------------------------------- * thk_shutdown *---------------------------------------------------------------------------*/ if( function_exists('thk_shutdown') === false ): function thk_shutdown() { if( is_admin() === false ) exit; } endif; /*--------------------------------------------------------------------------- * cleanup *---------------------------------------------------------------------------*/ if( function_exists('thk_cleanup') === false ): function thk_cleanup( $file_only = false ) { global $wp_filesystem, $wpdb; $filesystem = new thk_filesystem(); if( $filesystem->init_filesystem( site_url() ) === false ) return false; if( get_theme_admin_mod( 'all_clear', false ) !== false || $file_only === true ) { $del_files = array( TPATH . DSEP . 'style.min.css', TPATH . DSEP . 'style.async.min.css', TPATH . DSEP . 'style-amp.min.css', TPATH . DSEP . 'style.replace.min.css', TPATH . DSEP . 'style.1col.min.css', TPATH . DSEP . 'style.2col.min.css', TPATH . DSEP . 'style.3col.min.css', TPATH . DSEP . 'editor-style.min.css', TPATH . DSEP . 'editor-style-gutenberg.min.css', TPATH . DSEP . 'plugins.min.css', TPATH . DSEP . 'js' . DSEP . 'luxe.min.js', TPATH . DSEP . 'js' . DSEP . 'luxe.async.min.js', // ver3.6.12 以降未使用 TPATH . DSEP . 'js' . DSEP . 'jquery.luxe-migrate.min.js', // ver2.5.3 以降未使用 TPATH . DSEP . 'js' . DSEP . 'jquery.luxe.min.js', TPATH . DSEP . 'js' . DSEP . 'ladmin.min.js', TPATH . DSEP . 'js' . DSEP . 'thk-highlight.min.js', TPATH . DSEP . 'js' . DSEP . 'luxe-serviceworker-regist.js', SPATH . DSEP . 'style.min.css', SPATH . DSEP . 'style-amp.min.css', SPATH . DSEP . 'style.replace.min.css', SPATH . DSEP . 'editor-style.min.css', SPATH . DSEP . 'luxech.min.js', ABSPATH . 'luxe-manifest.json', // ver3.2.2 以降未使用 ABSPATH . 'luxe-serviceworker.js', // ver3.2.2 以降未使用 THK_HOME_PATH . 'luxe-manifest.json', THK_HOME_PATH . 'luxe-serviceworker.js', ); foreach( $del_files as $del_file ) { if( file_exists( $del_file ) === true ) { $wp_filesystem->delete( $del_file ); } } // webfonts foreach( (array)glob( TPATH . DSEP . 'webfonts' . DSEP . 'd' . DSEP . '*' ) as $del_file ) { if( stripos( $del_file, 'index.php' ) === false ) { $wp_filesystem->delete( $del_file ); } } if( isset( $_POST['all_clear'] ) ) { // block patterns foreach( (array)glob( SPATH . DSEP . 'block-patterns' . DSEP . '*.txt' ) as $del_file ) { $wp_filesystem->delete( $del_file ); } // phrases foreach( (array)glob( SPATH . DSEP . 'phrases' . DSEP . '*.txt' ) as $del_file ) { $wp_filesystem->delete( $del_file ); } // shortcodes foreach( (array)glob( SPATH . DSEP . 'shortcodes' . DSEP . '*.inc' ) as $del_file ) { $wp_filesystem->delete( $del_file ); } } if( $file_only === true ) return; remove_theme_mods(); remove_theme_admin_mods(); remove_theme_phrase_mods(); sns_count_cache_cleanup( true, true, false ); blogcard_cache_cleanup( true, false ); } else { if( get_theme_mod( 'sns_count_cache_cleanup', false ) !== false ) { remove_theme_mod( 'sns_count_cache_cleanup' ); sns_count_cache_cleanup( false, true, false ); } if( get_theme_mod( 'blogcard_cache_cleanup', false ) !== false ) { remove_theme_mod( 'blogcard_cache_cleanup' ); remove_theme_mod( 'blogcard_cache_expire_cleanup' ); blogcard_cache_cleanup( false, false ); } elseif( get_theme_mod( 'blogcard_cache_expire_cleanup', false ) !== false ) { remove_theme_mod( 'blogcard_cache_expire_cleanup' ); blogcard_cache_cleanup( false, true ); } } } add_action( 'customize_save_after', 'thk_cleanup', 99 ); endif;