本文整理汇总了PHP中wp_get_installed_translations函数的典型用法代码示例。如果您正苦于以下问题:PHP wp_get_installed_translations函数的具体用法?PHP wp_get_installed_translations怎么用?PHP wp_get_installed_translations使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了wp_get_installed_translations函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: pre_set_site_transient
/**
* Add language translations to update_plugins or update_themes transients.
*
* @param $transient
*
* @return mixed
*/
public function pre_set_site_transient($transient)
{
$locales = get_available_languages();
$locales = !empty($locales) ? $locales : array(get_locale());
$repos = array();
if (!isset($transient->translations)) {
return $transient;
}
if ('pre_set_site_transient_update_plugins' === current_filter()) {
$repos = Plugin::instance()->get_plugin_configs();
$translations = wp_get_installed_translations('plugins');
}
if ('pre_set_site_transient_update_themes' === current_filter()) {
$repos = Theme::instance()->get_theme_configs();
$translations = wp_get_installed_translations('themes');
}
$repos = array_filter($repos, function ($e) {
return isset($e->language_packs);
});
foreach ($repos as $repo) {
foreach ($locales as $locale) {
$lang_pack_mod = isset($repo->language_packs->{$locale}) ? strtotime($repo->language_packs->{$locale}->updated) : 0;
$translation_mod = isset($translations[$repo->repo][$locale]) ? strtotime($translations[$repo->repo][$locale]['PO-Revision-Date']) : 0;
if ($lang_pack_mod > $translation_mod) {
$transient->translations[] = (array) $repo->language_packs->{$locale};
}
}
}
$transient->translations = array_unique($transient->translations, SORT_REGULAR);
return $transient;
}
示例2: test_wp_get_installed_translations_for_core
/**
* @ticket 35284
*/
function test_wp_get_installed_translations_for_core()
{
$installed_translations = wp_get_installed_translations('core');
$this->assertInternalType('array', $installed_translations);
$textdomains_expected = array('admin', 'admin-network', 'continents-cities', 'default');
$this->assertEqualSets($textdomains_expected, array_keys($installed_translations));
$this->assertNotEmpty($installed_translations['default']['en_GB']);
$data_en_GB = $installed_translations['default']['en_GB'];
$this->assertEquals('2016-10-26 00:01+0200', $data_en_GB['PO-Revision-Date']);
$this->assertEquals('Development (4.4.x)', $data_en_GB['Project-Id-Version']);
$this->assertEquals('Poedit 1.8.10', $data_en_GB['X-Generator']);
$this->assertNotEmpty($installed_translations['admin']['es_ES']);
$data_es_ES = $installed_translations['admin']['es_ES'];
$this->assertEquals('2016-10-25 18:29+0200', $data_es_ES['PO-Revision-Date']);
$this->assertEquals('Administration', $data_es_ES['Project-Id-Version']);
$this->assertEquals('Poedit 1.8.10', $data_es_ES['X-Generator']);
}
示例3: wp_redirect
// Do not allow to delete Activated plugins.
if (empty($plugins)) {
wp_redirect(self_admin_url("plugins.php?error=true&main=true&plugin_status={$status}&paged={$page}&s={$s}"));
exit;
}
include ABSPATH . 'wp-admin/update.php';
$parent_file = 'plugins.php';
if (!isset($_REQUEST['verify-delete'])) {
wp_enqueue_script('jquery');
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
<div class="wrap">
<?php
$files_to_delete = $plugin_info = array();
$have_non_network_plugins = false;
$plugin_translations = wp_get_installed_translations('plugins');
foreach ((array) $plugins as $plugin) {
$plugin_slug = dirname($plugin);
if ('.' == $plugin_slug) {
$files_to_delete[] = WP_PLUGIN_DIR . '/' . $plugin;
if ($data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin)) {
$plugin_info[$plugin] = $data;
$plugin_info[$plugin]['is_uninstallable'] = is_uninstallable_plugin($plugin);
if (!$plugin_info[$plugin]['Network']) {
$have_non_network_plugins = true;
}
}
} else {
// Locate all the files in that folder.
$files = list_files(WP_PLUGIN_DIR . '/' . $plugin_slug);
if ($files) {
示例4: wp_die
if (!current_user_can('delete_themes')) {
wp_die(__('You do not have sufficient permissions to delete themes for this site.'));
}
check_admin_referer('bulk-themes');
$themes = isset($_REQUEST['checked']) ? (array) $_REQUEST['checked'] : array();
if (empty($themes)) {
wp_safe_redirect(add_query_arg('error', 'none', $referer));
exit;
}
$themes = array_diff($themes, array(get_option('stylesheet'), get_option('template')));
if (empty($themes)) {
wp_safe_redirect(add_query_arg('error', 'main', $referer));
exit;
}
$files_to_delete = $theme_info = array();
$theme_translations = wp_get_installed_translations('themes');
foreach ($themes as $key => $theme) {
$theme_info[$theme] = wp_get_theme($theme);
// Locate all the files in that folder.
$files = list_files($theme_info[$theme]->get_stylesheet_directory());
if ($files) {
$files_to_delete = array_merge($files_to_delete, $files);
}
// Add translation files.
$theme_slug = $theme_info[$theme]->get_stylesheet();
if (!empty($theme_translations[$theme_slug])) {
$translations = $theme_translations[$theme_slug];
foreach ($translations as $translation => $data) {
$files_to_delete[] = $theme_slug . '-' . $translation . '.po';
$files_to_delete[] = $theme_slug . '-' . $translation . '.mo';
}
示例5: delete_theme
/**
* Remove a theme
*
* @since 2.8.0
*
* @param string $stylesheet Stylesheet of the theme to delete
* @param string $redirect Redirect to page when complete.
* @return mixed
*/
function delete_theme($stylesheet, $redirect = '')
{
global $wp_filesystem;
if (empty($stylesheet)) {
return false;
}
ob_start();
if (empty($redirect)) {
$redirect = wp_nonce_url('themes.php?action=delete&stylesheet=' . urlencode($stylesheet), 'delete-theme_' . $stylesheet);
}
if (false === ($credentials = request_filesystem_credentials($redirect))) {
$data = ob_get_contents();
ob_end_clean();
if (!empty($data)) {
include_once ABSPATH . 'wp-admin/admin-header.php';
echo $data;
include ABSPATH . 'wp-admin/admin-footer.php';
exit;
}
return;
}
if (!WP_Filesystem($credentials)) {
request_filesystem_credentials($redirect, '', true);
// Failed to connect, Error and request again
$data = ob_get_contents();
ob_end_clean();
if (!empty($data)) {
include_once ABSPATH . 'wp-admin/admin-header.php';
echo $data;
include ABSPATH . 'wp-admin/admin-footer.php';
exit;
}
return;
}
if (!is_object($wp_filesystem)) {
return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
}
if (is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors);
}
// Get the base plugin folder.
$themes_dir = $wp_filesystem->wp_themes_dir();
if (empty($themes_dir)) {
return new WP_Error('fs_no_themes_dir', __('Unable to locate WordPress theme directory.'));
}
$themes_dir = trailingslashit($themes_dir);
$theme_dir = trailingslashit($themes_dir . $stylesheet);
$deleted = $wp_filesystem->delete($theme_dir, true);
if (!$deleted) {
return new WP_Error('could_not_remove_theme', sprintf(__('Could not fully remove the theme %s.'), $stylesheet));
}
$theme_translations = wp_get_installed_translations('themes');
// Remove language files, silently.
if (!empty($theme_translations[$stylesheet])) {
$translations = $theme_translations[$stylesheet];
foreach ($translations as $translation => $data) {
$wp_filesystem->delete(WP_LANG_DIR . '/themes/' . $stylesheet . '-' . $translation . '.po');
$wp_filesystem->delete(WP_LANG_DIR . '/themes/' . $stylesheet . '-' . $translation . '.mo');
}
}
// Force refresh of theme update information.
delete_site_transient('update_themes');
return true;
}
示例6: delete_plugins
/**
* Remove directory and files of a plugin for a list of plugins.
*
* @since 2.6.0
*
* @global WP_Filesystem_Base $wp_filesystem
*
* @param array $plugins List of plugins to delete.
* @param string $deprecated Deprecated.
* @return bool|null|WP_Error True on success, false is $plugins is empty, WP_Error on failure.
* Null if filesystem credentials are required to proceed.
*/
function delete_plugins( $plugins, $deprecated = '' ) {
global $wp_filesystem;
if ( empty($plugins) )
return false;
$checked = array();
foreach( $plugins as $plugin )
$checked[] = 'checked[]=' . $plugin;
ob_start();
$url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-plugins');
if ( false === ($credentials = request_filesystem_credentials($url)) ) {
$data = ob_get_contents();
ob_end_clean();
if ( ! empty($data) ){
include_once( ABSPATH . 'wp-admin/admin-header.php');
echo $data;
include( ABSPATH . 'wp-admin/admin-footer.php');
exit;
}
return;
}
if ( ! WP_Filesystem($credentials) ) {
request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again
$data = ob_get_contents();
ob_end_clean();
if ( ! empty($data) ){
include_once( ABSPATH . 'wp-admin/admin-header.php');
echo $data;
include( ABSPATH . 'wp-admin/admin-footer.php');
exit;
}
return;
}
if ( ! is_object($wp_filesystem) )
return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() )
return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors);
// Get the base plugin folder.
$plugins_dir = $wp_filesystem->wp_plugins_dir();
if ( empty( $plugins_dir ) ) {
return new WP_Error( 'fs_no_plugins_dir', __( 'Unable to locate WordPress Plugin directory.' ) );
}
$plugins_dir = trailingslashit( $plugins_dir );
$plugin_translations = wp_get_installed_translations( 'plugins' );
$errors = array();
foreach( $plugins as $plugin_file ) {
// Run Uninstall hook.
if ( is_uninstallable_plugin( $plugin_file ) ) {
uninstall_plugin($plugin_file);
}
$this_plugin_dir = trailingslashit( dirname( $plugins_dir . $plugin_file ) );
// If plugin is in its own directory, recursively delete the directory.
if ( strpos( $plugin_file, '/' ) && $this_plugin_dir != $plugins_dir ) { //base check on if plugin includes directory separator AND that it's not the root plugin folder
$deleted = $wp_filesystem->delete( $this_plugin_dir, true );
} else {
$deleted = $wp_filesystem->delete( $plugins_dir . $plugin_file );
}
if ( ! $deleted ) {
$errors[] = $plugin_file;
continue;
}
// Remove language files, silently.
$plugin_slug = dirname( $plugin_file );
if ( '.' !== $plugin_slug && ! empty( $plugin_translations[ $plugin_slug ] ) ) {
$translations = $plugin_translations[ $plugin_slug ];
foreach ( $translations as $translation => $data ) {
$wp_filesystem->delete( WP_LANG_DIR . '/plugins/' . $plugin_slug . '-' . $translation . '.po' );
$wp_filesystem->delete( WP_LANG_DIR . '/plugins/' . $plugin_slug . '-' . $translation . '.mo' );
}
}
}
// Remove deleted plugins from the plugin updates list.
if ( $current = get_site_transient('update_plugins') ) {
//.........这里部分代码省略.........
示例7: learn_press_get_plugin_data
function learn_press_get_plugin_data($plugins)
{
global $wp_version;
//$plugins = get_plugins();
$translations = wp_get_installed_translations('plugins');
$active = get_option('active_plugins', array());
$current = get_site_transient('update_plugins');
$to_send = compact('plugins', 'active');
$locales = array(get_locale());
$options = array('timeout' => 30, 'body' => array('plugins' => wp_json_encode($to_send), 'translations' => wp_json_encode($translations), 'locale' => wp_json_encode($locales), 'all' => wp_json_encode(true)), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo('url'));
/*if ( $extra_stats ) {
$options['body']['update_stats'] = wp_json_encode( $extra_stats );
}*/
$url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/';
if ($ssl = wp_http_supports(array('ssl'))) {
$url = set_url_scheme($url, 'https');
}
$raw_response = wp_remote_post($url, $options);
if ($ssl && is_wp_error($raw_response)) {
trigger_error(__('An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the <a href="https://wordpress.org/support/">support forums</a>.', 'learn_press') . ' ' . __('(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)', 'learn_press'), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE);
$raw_response = wp_remote_post($http_url, $options);
}
$response = json_decode(wp_remote_retrieve_body($raw_response), true);
//print_r($response);
}
示例8: wp_update_themes
/**
* Check theme versions against the latest versions hosted on WordPress.org.
*
* A list of all themes installed in sent to WP. Checks against the
* WordPress server at api.wordpress.org. Will only check if WordPress isn't
* installing.
*
* @since 2.7.0
* @uses $wp_version Used to notify the WordPress version.
*
* @param array $extra_stats Extra statistics to report to the WordPress.org API.
*/
function wp_update_themes($extra_stats = array())
{
if (wp_installing()) {
return;
}
global $wp_version;
// include an unmodified $wp_version
include ABSPATH . WPINC . '/version.php';
$installed_themes = wp_get_themes();
$translations = wp_get_installed_translations('themes');
$last_update = get_site_transient('update_themes');
if (!is_object($last_update)) {
$last_update = new stdClass();
}
$themes = $checked = $request = array();
// Put slug of current theme into request.
$request['active'] = get_option('stylesheet');
foreach ($installed_themes as $theme) {
$checked[$theme->get_stylesheet()] = $theme->get('Version');
$themes[$theme->get_stylesheet()] = array('Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet());
}
// Check for update on a different schedule, depending on the page.
switch (current_filter()) {
case 'upgrader_process_complete':
$timeout = 0;
break;
case 'load-update-core.php':
$timeout = MINUTE_IN_SECONDS;
break;
case 'load-themes.php':
case 'load-update.php':
$timeout = HOUR_IN_SECONDS;
break;
default:
if (defined('DOING_CRON') && DOING_CRON) {
$timeout = 0;
} else {
$timeout = 12 * HOUR_IN_SECONDS;
}
}
$time_not_changed = isset($last_update->last_checked) && $timeout > time() - $last_update->last_checked;
if ($time_not_changed && !$extra_stats) {
$theme_changed = false;
foreach ($checked as $slug => $v) {
if (!isset($last_update->checked[$slug]) || strval($last_update->checked[$slug]) !== strval($v)) {
$theme_changed = true;
}
}
if (isset($last_update->response) && is_array($last_update->response)) {
foreach ($last_update->response as $slug => $update_details) {
if (!isset($checked[$slug])) {
$theme_changed = true;
break;
}
}
}
// Bail if we've checked recently and if nothing has changed
if (!$theme_changed) {
return;
}
}
// Update last_checked for current to prevent multiple blocking requests if request hangs
$last_update->last_checked = time();
set_site_transient('update_themes', $last_update);
$request['themes'] = $themes;
/**
* Filter the locales requested for theme translations.
*
* @since 3.7.0
*
* @param array $locales Theme locale. Default is current locale of the site.
*/
$locales = apply_filters('themes_update_check_locales', array(get_locale()));
if (defined('DOING_CRON') && DOING_CRON) {
$timeout = 30;
} else {
// Three seconds, plus one extra second for every 10 themes
$timeout = 3 + (int) (count($themes) / 10);
}
$options = array('timeout' => $timeout, 'body' => array('themes' => wp_json_encode($request), 'translations' => wp_json_encode($translations), 'locale' => wp_json_encode($locales)), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo('url'));
if ($extra_stats) {
$options['body']['update_stats'] = wp_json_encode($extra_stats);
}
$url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/';
if ($ssl = wp_http_supports(array('ssl'))) {
$url = set_url_scheme($url, 'https');
}
$raw_response = wp_remote_post($url, $options);
//.........这里部分代码省略.........
示例9: wp_update_themes
/**
* Check theme versions against the latest versions hosted on WordPress.org.
*
* A list of all themes installed in sent to WP. Checks against the
* WordPress server at api.wordpress.org. Will only check if WordPress isn't
* installing.
*
* @package WordPress
* @since 2.7.0
* @uses $wp_version Used to notify the WordPress version.
*
* @return mixed Returns null if update is unsupported. Returns false if check is too soon.
*/
function wp_update_themes() {
include ABSPATH . WPINC . '/version.php'; // include an unmodified $wp_version
if ( defined( 'WP_INSTALLING' ) )
return false;
$installed_themes = wp_get_themes();
$translations = wp_get_installed_translations( 'themes' );
$last_update = get_site_transient( 'update_themes' );
if ( ! is_object($last_update) )
$last_update = new stdClass;
$themes = $checked = $request = array();
// Put slug of current theme into request.
$request['active'] = get_option( 'stylesheet' );
foreach ( $installed_themes as $theme ) {
$checked[ $theme->get_stylesheet() ] = $theme->get('Version');
$themes[ $theme->get_stylesheet() ] = array(
'Name' => $theme->get('Name'),
'Title' => $theme->get('Name'),
'Version' => $theme->get('Version'),
'Author' => $theme->get('Author'),
'Author URI' => $theme->get('AuthorURI'),
'Template' => $theme->get_template(),
'Stylesheet' => $theme->get_stylesheet(),
);
}
// Check for update on a different schedule, depending on the page.
switch ( current_filter() ) {
case 'upgrader_process_complete' :
$timeout = 0;
break;
case 'load-update-core.php' :
$timeout = MINUTE_IN_SECONDS;
break;
case 'load-themes.php' :
case 'load-update.php' :
$timeout = HOUR_IN_SECONDS;
break;
default :
$timeout = 12 * HOUR_IN_SECONDS;
}
$time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked );
if ( $time_not_changed ) {
$theme_changed = false;
foreach ( $checked as $slug => $v ) {
if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) )
$theme_changed = true;
}
if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) {
foreach ( $last_update->response as $slug => $update_details ) {
if ( ! isset($checked[ $slug ]) ) {
$theme_changed = true;
break;
}
}
}
// Bail if we've checked recently and if nothing has changed
if ( ! $theme_changed )
return false;
}
// Update last_checked for current to prevent multiple blocking requests if request hangs
$last_update->last_checked = time();
set_site_transient( 'update_themes', $last_update );
$request['themes'] = $themes;
$locales = array( get_locale() );
/**
* Filter the locales requested for theme translations.
*
* @since 3.7.0
*
* @param array $locales Theme locale. Default is current locale of the site.
*/
$locales = apply_filters( 'themes_update_check_locales', $locales );
//.........这里部分代码省略.........
示例10: get_installed_languages
/**
* Return a list of installed languages.
*
* @return array
*/
protected function get_installed_languages()
{
$available = wp_get_installed_translations($this->obj_type);
$available = !empty($available['default']) ? array_keys($available['default']) : array();
$available[] = 'en_US';
return $available;
}
示例11: check_for_detheme_plugins_update
function check_for_detheme_plugins_update()
{
include ABSPATH . WPINC . '/version.php';
// include an unmodified $wp_version
if (defined('WP_INSTALLING')) {
return false;
}
$tm = wp_get_theme();
$theme_name = $tm->get('Name');
$theme_template = $tm->get_template();
$sn = get_option("detheme_license_" . $tm->get_template());
if (empty($sn)) {
return false;
}
// If running blog-side, bail unless we've not checked in the last 12 hours
if (!function_exists('get_plugins')) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
$plugins = get_plugins();
$translations = wp_get_installed_translations('plugins');
$active = get_option('active_plugins', array());
$current = get_site_transient('detheme_update_plugins');
if (!is_object($current)) {
$current = new stdClass();
}
$new_option = new stdClass();
$new_option->last_checked = time();
// Check for update on a different schedule, depending on the page.
switch (current_filter()) {
case 'upgrader_process_complete':
$timeout = 0;
break;
case 'load-update-core.php':
$timeout = MINUTE_IN_SECONDS;
break;
case 'load-plugins.php':
case 'load-update.php':
$timeout = HOUR_IN_SECONDS;
break;
default:
if (defined('DOING_CRON') && DOING_CRON) {
$timeout = 0;
} else {
$timeout = 12 * HOUR_IN_SECONDS;
}
}
$time_not_changed = isset($current->last_checked) && $timeout > time() - $current->last_checked;
if ($time_not_changed) {
return false;
}
$updates = array();
foreach ($plugins as $file => $p) {
if (preg_match("/(detheme.com)/i", $p['AuthorURI'])) {
$updates[$file] = $p;
}
}
if (!count($updates)) {
$new_option->response = array();
$new_option->translations = array();
set_site_transient('detheme_update_plugins', $new_option);
return false;
}
$current->last_checked = time();
set_site_transient('detheme_update_plugins', $current);
$locales = array(get_locale());
/**
* Filter the locales requested for plugin translations.
*
* @since 3.7.0
*
* @param array $locales Plugin locale. Default is current locale of the site.
*/
$locales = apply_filters('plugins_update_check_locales', $locales);
$options = array('timeout' => defined('DOING_CRON') && DOING_CRON ? 30 : 3, 'body' => array('plugins' => json_encode($updates), 'translations' => json_encode($translations), 'locale' => json_encode($locales), 'license' => $sn), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo('url'));
$url = $http_url = 'http://repo.detheme.com/plugin/';
if ($ssl = wp_http_supports(array('ssl'))) {
$url = set_url_scheme($url, 'https');
}
$raw_response = wp_remote_post($url, $options);
if ($ssl && is_wp_error($raw_response)) {
$raw_response = wp_remote_post($http_url, $options);
}
if (is_wp_error($raw_response) || 200 != wp_remote_retrieve_response_code($raw_response)) {
return false;
}
$response = json_decode(wp_remote_retrieve_body($raw_response), true);
if (is_array($response)) {
foreach ($response['plugins'] as &$plugin) {
$plugin = (object) $plugin;
}
unset($plugin);
$new_option->response = $response['plugins'];
$new_option->translations = '';
} else {
$new_option->response = array();
$new_option->translations = array();
}
set_site_transient('detheme_update_plugins', $new_option);
}
示例12: uninstall
/**
* Uninstall a given language.
*
* <language>
* : Language code to uninstall.
*
* @subcommand uninstall
*/
public function uninstall($args, $assoc_args)
{
global $wp_filesystem;
list($language_code) = $args;
$available = wp_get_installed_translations($this->obj_type);
$available = !empty($available['default']) ? array_keys($available['default']) : array();
if (!in_array($language_code, $available)) {
\WP_CLI::error("Language not installed.");
}
$dir = 'core' === $this->obj_type ? '' : "/{$this->obj_type}";
$files = scandir(WP_LANG_DIR . $dir);
if (!$files) {
\WP_CLI::error("No files found in language directory.");
}
// As of WP 4.0, no API for deleting a language pack
WP_Filesystem();
$deleted = false;
foreach ($files as $file) {
if ('.' === $file[0] || is_dir($file)) {
continue;
}
$extension_length = strlen($language_code) + 4;
$ending = substr($file, -$extension_length);
if (!in_array($file, array($language_code . '.po', $language_code . '.mo')) && !in_array($ending, array('-' . $language_code . '.po', '-' . $language_code . '.mo'))) {
continue;
}
$deleted = $wp_filesystem->delete(WP_LANG_DIR . $dir . '/' . $file);
}
if ($deleted) {
\WP_CLI::success("Language uninstalled.");
} else {
\WP_CLI::error("Couldn't uninstall language.");
}
}
示例13: filterApplicableTranslations
/**
* Filter a list of translation updates and return a new list that contains only updates
* that apply to the current site.
*
* @param array $translations
* @return array
*/
private function filterApplicableTranslations($translations)
{
$languages = array_flip(array_values(get_available_languages()));
$installedTranslations = wp_get_installed_translations('plugins');
if (isset($installedTranslations[$this->slug])) {
$installedTranslations = $installedTranslations[$this->slug];
} else {
$installedTranslations = array();
}
$applicableTranslations = array();
foreach ($translations as $translation) {
//Does it match one of the available core languages?
$isApplicable = array_key_exists($translation->language, $languages);
//Is it more recent than an already-installed translation?
if (isset($installedTranslations[$translation->language])) {
$updateTimestamp = strtotime($translation->updated);
$installedTimestamp = strtotime($installedTranslations[$translation->language]['PO-Revision-Date']);
$isApplicable = $updateTimestamp > $installedTimestamp;
}
if ($isApplicable) {
$applicableTranslations[] = $translation;
}
}
return $applicableTranslations;
}