Поддержка Обратная связь Доработка function wp_get_translation_updates и list_translation_updates

  • Доработка будет хорошо работать, если вы будете обновлять запись о дате в mysql

    в базу данных

    INSERT INTO wp_options (option_id,option_name,option_value,autoload) VALUES
    (NULL, ‘_site_transient_update_core_date’, ‘0’, »);
    INSERT INTO wp_options (option_id, option_name, option_value, autoload) VALUES
    (NULL, ‘_site_transient_update_plugin_date’, ‘0’, »);
    INSERT INTO wp_options (option_id, option_name, option_value, autoload) VALUES
    (NULL, ‘_site_transient_update_theme_date’, ‘0’, »);

    в wp-admin/update-core.php замените стандартную функцию list_translation_updates()

    function list_translation_updates() {
    	$updates = wp_get_translation_updates();
    	if ( ! $updates ) {
    		if ( 'en_US' != get_locale() ) {
    			echo '<h3>' . __( 'Translations' ) . '</h3>';
    			echo '<p>' . __( 'Your translations are all up to date.' ) . '</p>';
    		}
    		return;
    	}
    	$form_action = 'update-core.php?action=do-translation-upgrade';
    	?>
    	<h3><?php _e( 'Translations' ); ?></h3>
    	<form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-translations" class="upgrade">
    		<p><?php
      for($i = 0; $i < count($updates); $i++) {
         echo '<a target="_blank" href="'.$updates[$i]->package.'">'.$updates[$i]->package.'</a><br />\nдата выхода<br />\n'.$updates[$i]->updated.'<br />\n';
      } ?>
    </p>
    		<?php wp_nonce_field( 'upgrade-translations' ); ?>
    		<p><input class="button" type="submit" value="<?php esc_attr_e( 'Update Translations' ); ?>" name="upgrade" /></p>
    	</form>
    	<?php
    }

    в wp-includes/update.php замените стандартную функцию wp_get_translation_updates()

    function wp_get_translation_updates() {
    	$updates = array();
    	$transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' );
    	foreach ( $transients as $transient => $type ) {
    		$get_transient = get_site_transient( $transient );
    		if ( empty( $get_transient->translations ) )
    			continue;
    for($i = 0; $i < count($transient->translations); $i++) {
    		if ( get_option('_site_transient_'.$transient.'_date') != $get_transient->translations[$i]['updated'] )
    		foreach ( $get_transient->translations as $translation ) {
    		    $updates[] = (object) $translation;
                   }
     }
    	}
    	return $updates;
    }

    Если вам понравилась доработка, то установите мой плагин «Виджет для поиска от ofru.ru»

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    1. Если вы хотите предложить улучшение для ядра WordPress, сделайте это в багтрекере (на английском и без рекламы своего плагина). Или хотя бы опишите суть изменений здесь, на русском и со скриншотами.
    2. Изменение в wp_get_translation_updates() приводит к ошибке:
      Notice: Trying to get property of non-object in wp-includes/update.php on line 503

      Вы забыли заменить в этой строке $transient на $get_transient.

    3. Насколько я понимаю, вы предлагаете заменить строку «Некоторые из ваших переводов устарели» на список ZIP-архивов с датой выхода. В отличие от плагинов и тем, переводы обновляются все сразу, поэтому я не вижу принципиальной важности этих данных для пользователя.
    4. Предложение по изменению этой строки уже есть в багтрекере, пока было решено оставить её как есть.

    исправленная версия

    function list_translation_updates() {
    	$updates = wp_get_translation_updates();
    	if ( ! $updates ) {
    		if ( 'en_US' != get_locale() ) {
    			echo '<h3>' . __( 'Translations' ) . '</h3>';
    			echo '<p>' . __( 'Your translations are all up to date.' ) . '</p>';
    		}
    		return;
    	}
    	$form_action = 'update-core.php?action=do-translation-upgrade';
    	?>
    	<h3><?php _e( 'Translations' ); ?></h3>
    	<form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-translations" class="upgrade">
    		<p><?php
      for($i = 0; $i < count($updates); $i++) {
         echo '<a target="_blank" href="'.$updates[$i]->package.'">'.$updates[$i]->package.'</a><br />дата выхода<br />'.$updates[$i]->updated.'<br />';
      } ?>
    </p>
    		<?php wp_nonce_field( 'upgrade-translations' ); ?>
    		<p><input class="button" type="submit" value="<?php esc_attr_e( 'Update Translations' ); ?>" name="upgrade" /></p>
    	</form>
    	<?php
    }

    Суть проста, чтоб скачать вручную новой пакет и установить, и обойтись без функции scandir, некоторые хостинги выкл. так как она не безопасна
    скрин

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Доработка function wp_get_translation_updates и list_translation_updates» закрыта для новых ответов.