Odpowiedzi:
Ta wiadomość jest tworzona przez W3_Total_Cache->in_plugin_update_message()
hooked to "in_plugin_update_message-$file"
in wp_plugin_update_row()
.
Ma kilka lat pięćdziesiątych, aby parsować plik Readme i wyświetlać informacje z dziennika zmian, ale ogólnie rzecz biorąc, możesz po prostu echo niektórych rzeczy, jak w przypadku każdego innego haka.
Aby wyczyścić nazwę haka akcji:
global $pagenow;
if ( 'plugins.php' === $pagenow )
{
// Better update message
$file = basename( __FILE__ );
$folder = basename( dirname( __FILE__ ) );
$hook = "in_plugin_update_message-{$folder}/{$file}";
add_action( $hook, 'your_update_message_cb', 20, 2 );
}
Do samej funkcji $variables
dołączono dwa : $plugins_data
& $r
, do których dostęp można uzyskać dzięki wtyczce.
/**
* Displays an update message for plugin list screens.
* Shows only the version updates from the current until the newest version
*
* @param (array) $plugin_data
* @param (object) $r
* @return (string) $output
*/
function your_update_message_cb( $plugin_data, $r )
{
// readme contents
$data = file_get_contents( 'http://plugins.trac.wordpress.org/browser/YOUR_PLUGIN_FOLDER_NAME_IN_THE_OFFICIAL_REPO/trunk/readme.txt?format=txt' );
// assuming you've got a Changelog section
// @example == Changelog ==
$changelog = stristr( $data, '== Changelog ==' );
// assuming you've got a Screenshots section
// @example == Screenshots ==
$changelog = stristr( $changelog, '== Screenshots ==', true );
// only return for the current & later versions
$curr_ver = get_plugin_data('Version');
// assuming you use "= v" to prepend your version numbers
// @example = v0.2.1 =
$changelog = stristr( $changelog, "= v{$curr_ver}" );
// uncomment the next line to var_export $var contents for dev:
# echo '<pre>'.var_export( $plugin_data, false ).'<br />'.var_export( $r, false ).'</pre>';
// echo stuff....
$output = 'whatever you want to do';
return print $output;
}
Notatka:
Takie podejście można znaleźć we wtyczce do sprawdzania linków wewnętrznych .
Dodanie:
plugin_basename(__FILE__)
można użyć zamiast tych dwóch wierszy powyżej. Sprawdzanie, czy bieżąca strona jest stroną wtyczki, nie jest tak naprawdę konieczne, ponieważ funkcja będzie wywoływana tylko przez tę stronę. (Bardzo niewielka) korzyść wciąż polega na tym, że nie masz dołączonego innego połączenia zwrotnego. Ponieważ ta odpowiedź jest dość stara, podczas gdy to podejście nadal działa bez problemu, sprawdź teraz obiekt zwracany przez get_current_screen()
.