Closed mav2287 closed 8 years ago
I had to go dig through the code to find the function you referenced in your note. You may want to change the example for Wordpress to...
require_once __DIR__ . '/path/to/wp-update-server/loader.php';
class Wpup_UpdateServer_Extension extends Wpup_UpdateServer {
// Change the action and slug to match others
protected function generateDownloadUrl(Wpup_Package $package) {
$query = array(
'update_action' => 'download',
'update_slug' => $package->slug,
);
return self::addQueryArg($query, $this->serverUrl);
}
}
class ExamplePlugin {
protected $updateServer;
public function __construct() {
$this->updateServer = new Wpup_UpdateServer_Extension(home_url('/'));
add_filter('query_vars', array($this, 'addQueryVariables'));
add_action('template_redirect', array($this, 'handleUpdateApiRequest'));
}
public function addQueryVariables($queryVariables) {
$queryVariables = array_merge($queryVariables, array(
'update_action',
'update_slug',
));
return $queryVariables;
}
public function handleUpdateApiRequest() {
if ( get_query_var('update_action') ) {
$this->updateServer->handleRequest(array(
'action' => get_query_var('update_action'),
'slug' => get_query_var('update_slug'),
));
}
}
}
$examplePlugin = new ExamplePlugin();
Do you mean the code example in the Running this server from another script section? Yes, it does use different query parameters (because action
and slug
are often already taken by WP core), but it also includes this note:
Note: If you intend to use something like the above in practice, you'll probably want to override Wpup_UpdateServer::generateDownloadUrl() to use your own URL structure or query variable names.
That code is intended to be a brief example, not something that you can use as-is. I guess I could make that more apparent or adjust the example as you suggested.
Not a huge deal, but it's always nice to have working examples you get running quickly without extra code.
I was able to get up and running quickly by using the documentation. When it come to coding, examples are just that, examples.
I've updated the code example as suggested by @mav2287 (with a few slight modifications).
When I was reading the docs and playing with the code to get familiar with it I noticed the Wordpress example has a bug. You changed the query string params to "update_action" & "update_slug" instead of just "action" and "slug" with the class. The issue with this is that when the code gives back the download URL it gives it with the old params "action" and "slug" rather than "update_action" & "update_slug" so the download url doesn't work.