Réponses:
Ce message est créé par W3_Total_Cache->in_plugin_update_message()
accroché à "in_plugin_update_message-$file"
en wp_plugin_update_row()
.
Il fait quelques années 50 pour analyser le fichier Lisez-moi et afficher les informations du journal des modifications, mais dans l'ensemble, vous pouvez simplement faire écho à certaines choses comme avec n'importe quel autre crochet.
Pour rendre le nom du crochet d'action clair:
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 );
}
La fonction elle-même a deux $variables
attachés: $plugins_data
& $r
, qui peut être accessible par votre plugin.
/**
* 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;
}
Note de bas de page:
Cette approche peut être trouvée dans le plugin Internal Link Checker .
Une addition:
plugin_basename(__FILE__)
peut être utilisé à la place de ces deux lignes ci-dessus. Il n'est pas vraiment nécessaire de vérifier si la page actuelle est la page du plugin car la fonction ne sera appelée que par cette page de toute façon. L'avantage (très mineur) est que vous n'avez aucun autre rappel attaché. Comme cette réponse est assez ancienne, vous devriez, bien que cette approche fonctionne toujours sans problème, comparer maintenant l'objet retourné par get_current_screen()
.