Ejemplo n.º 1
0
 public static function resolveLanguagesPath(\WP_Theme $theme)
 {
     // as taken from wp-includes/class-wp-theme.php:1114
     $path = $theme->get_stylesheet_directory();
     if ($domainpath = $theme->get('DomainPath')) {
         $path .= $domainpath;
     } else {
         $path .= '/languages';
     }
     return $path;
 }
    /**
     * Runs the actual child theme creation functionality
     *
     * @global WP_Filesystem_Base $wp_filesystem
     *
     * @param string              $new_theme
     * @param WP_Theme            $template
     *
     * @throws Exception If the global filesystem object isn't available
     */
    public static function procreate($new_theme, WP_Theme $template)
    {
        /** @var WP_Filesystem_Base $wp_filesystem */
        global $wp_filesystem;
        if (!$wp_filesystem instanceof WP_Filesystem_Base) {
            if (!WP_Filesystem()) {
                throw new Exception(esc_html__('Could not access the filesystem!', 'child-themify'));
            }
        }
        $oldStylesheet = $template->get_stylesheet();
        $templateDirectory = untrailingslashit($template->get_stylesheet_directory());
        $oldName = $template->name;
        $new_theme_directory = trailingslashit(get_theme_root()) . sanitize_file_name(strtolower($new_theme));
        $wp_filesystem->mkdir($new_theme_directory);
        $newStylesheet = trailingslashit($new_theme_directory) . 'style.css';
        $wp_filesystem->touch($newStylesheet);
        $stylesheetContents = <<<EOF
/*
Theme Name: {$new_theme}
Version: 1.0
Description: A child theme of {$oldName}
Template: {$oldStylesheet}
*/

@import url("../{$oldStylesheet}/style.css");

EOF;
        $wp_filesystem->put_contents($newStylesheet, $stylesheetContents);
        if (file_exists("{$templateDirectory}/screenshot.png")) {
            $wp_filesystem->copy("{$templateDirectory}/screenshot.png", "{$new_theme_directory}/screenshot.png");
        }
        add_settings_error('', 'child-themify', esc_html__('Your child theme was created successfully.', 'child-themify'), 'updated');
    }
Ejemplo n.º 3
0
 private function loadFile($file, \WP_Theme $theme)
 {
     if (!is_file($file) || !preg_match('/\\.ya?ml$/', $file)) {
         return;
     }
     $theme_dir = $theme->get_stylesheet_directory();
     $theme_uri = $theme->get_stylesheet_directory_uri();
     $components_uri = WP_CONTENT_URL . '/components';
     ob_start();
     include $file;
     $content = ob_get_clean();
     try {
         $config = Yaml::parse($content);
         self::array_overwrite($this->configs, $config);
     } catch (ParseException $e) {
         trigger_error("Error while parsing {$file}: " . $e->getMessage(), E_USER_WARNING);
     }
 }