PHPackages                             wbf/customupdater - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. wbf/customupdater

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

wbf/customupdater
=================

An helper component for managing themes and plugin updates

010PHP

Since Sep 28Pushed 8y ago3 watchersCompare

[ Source](https://github.com/wagaweb/wbf_customupdater)[ Packagist](https://packagist.org/packages/wbf/customupdater)[ RSS](/packages/wbf-customupdater/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Custom Updater
==============

[](#custom-updater)

This component enable developers to update themes and plugins from custom servers.

Custom Theme Updater
--------------------

[](#custom-theme-updater)

Thanks to `Theme_Updater_Checker` class it is possible to update theme through custom endpoint.

### Getting started

[](#getting-started)

Before implementing the update mechanism in WordPress you need an endpoint which respond with data in json format. That JSON must contain at least four information:

- `theme`: the theme slug
- `version`: the theme version
- `download_url`: the url of the theme package (a zip file
- `details_url`: the url of the theme changelog \\ additional information

After this is inital setup, the implementation is just an one-liner:

```
/**
 * Manage Update Server
 */
function set_update_server(){
	$tup = new Theme_Update_Checker("my-theme","my-endpoint");
}
add_action("init", "set_update_server");
```

#### Block updates

[](#block-updates)

It is possible to block updates (if you sell licenses for example) by hooking at `"wbf/custom_theme_updater/can_update"`

```
add_filter("wbf/custom_theme_updater/can_update", "disallow_updates", 10, 2);
function disallow_updates($can_update, Theme_Update_Checker $checker){
    if(){
        $can_update = false;
    }
    return $can_update;
}
```

By this way the update notice will still be visible, but the update process will return an error.

You could show a notice to better explain this error:

```
add_action("wbf/custom_theme_updater/after_update_inject", "update_notice"], 10, 2);
function update_notice(Theme_Update_Checker $checker, $can_update){
    if(!$can_update){
        //Display the notice...
    }
}
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/ecab5a59cfdd434af4feb082bcb4c24e264ea99574713c876789c3ea8a088c65?d=identicon)[Waga Dev](/maintainers/Waga%20Dev)

---

Top Contributors

[![LostCore](https://avatars.githubusercontent.com/u/2674299?v=4)](https://github.com/LostCore "LostCore (17 commits)")

### Embed Badge

![Health badge](/badges/wbf-customupdater/health.svg)

```
[![Health](https://phpackages.com/badges/wbf-customupdater/health.svg)](https://phpackages.com/packages/wbf-customupdater)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
