Vi este mensaje hoy cuando accedí a mi página de complementos:
Entonces, ¿cómo creo esto si quiero actualizar mis propios complementos que están alojados en wordpress?
Vi este mensaje hoy cuando accedí a mi página de complementos:
Entonces, ¿cómo creo esto si quiero actualizar mis propios complementos que están alojados en wordpress?
Este mensaje se crea mediante W3_Total_Cache->in_plugin_update_message()
enlazado a "in_plugin_update_message-$file"
en wp_plugin_update_row()
.
Hace algunos años para analizar el archivo Léame y mostrar la información del registro de cambios, pero en general puedes repetir algunas cosas como con cualquier otro gancho.
Para que el nombre del enlace de la acción sea claro:
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 función en sí tiene dos $variables
adjunto: $plugins_data
& $r
, al que puede acceder su complemento.
/**
* 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;
}
Footnote:
Este enfoque se puede encontrar en el complemento del verificador de enlaces interno .
Addition:
plugin_basename(__FILE__)
se puede usar en lugar de las dos líneas anteriores. También verificar si la página actual es la página del complemento no es realmente necesario ya que la función solo será llamada por esa página de todos modos. El beneficio (muy pequeño) aún es que no tiene otra devolución de llamada adjunta. Como esta respuesta es bastante antigua, lo haría, aunque este enfoque aún funciona sin problemas, ahora verifique con el objeto devuelto por get_current_screen()
.