So erstellen Sie eine benutzerdefinierte Nachricht beim Plugin-Update

Ich habe diese Nachricht heute beim Zugriff auf meine Plugin-Seite gesehen: benutzerdefinierte Plugin-Update-Nachricht

Also, wie erstelle ich das, wenn ich meine eigenen Plugins aktualisieren möchte, die auf WordPress gehostet werden?

Solutions Collecting From Web of "So erstellen Sie eine benutzerdefinierte Nachricht beim Plugin-Update"

Diese Nachricht wird erstellt von W3_Total_Cache->in_plugin_update_message() , "in_plugin_update_message-$file" an "in_plugin_update_message-$file" in wp_plugin_update_row() .

Es macht etwas nix, Readme zu lesen und Informationen aus Changelog anzuzeigen, aber insgesamt kann man nur ein paar Sachen wiederholen wie mit jedem anderen Hook.

Hakenbau

Um den Namen des Aktions-Hooks zu verdeutlichen:

 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 ); } 

Hooked Callback-function

Die function selbst hat zwei $variables angehängt: $plugins_data & $r , auf die Ihr Plugin $plugins_data kann.

 /** * 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 '
'.var_export( $plugin_data, false ).'
'.var_export( $r, false ).'

'; // echo stuff.... $output = 'whatever you want to do'; return print $output; }


Fußnote:

Dieser Ansatz findet sich im Plugin Interner Link Checker .

Zusatz:

plugin_basename(__FILE__) kann anstelle dieser zwei Zeilen oben verwendet werden. Auch zu prüfen, ob die aktuelle Seite die Plugin-Seite ist, ist nicht wirklich notwendig, da die function sowieso nur von dieser Seite aufgerufen wird. Der (sehr geringe) Vorteil ist, dass Sie keinen weiteren callback haben. Da diese Antwort ziemlich alt ist, würden Sie, während dieser Ansatz immer noch ohne Probleme funktioniert, jetzt nach dem von get_current_screen() Objekt get_current_screen() .