Make WordPress Core


Ignore:
Timestamp:
05/17/2021 05:02:49 PM (4 years ago)
Author:
SergeyBiryukov
Message:

Plugins: Add support for Update URI header.

This allows third-party plugins to avoid accidentally being overwritten with an update of a plugin of a similar name from the WordPress.org Plugin Directory.

Additionally, introduce the update_plugins_{$hostname} filter, which third-party plugins can use to offer updates for a given hostname.

If set, the Update URI header field should be a URI and have a unique hostname.

Some examples include:

  • https://wordpress.org/plugins/example-plugin/
  • https://example.com/my-plugin/
  • my-custom-plugin-name

Update URI: false also works, and unless there is code handling the false hostname, the plugin will never get an update notification.

If the header is present, the WordPress.org API will currently only return updates for the plugin if it matches the following format:

  • https://wordpress.org/plugins/{$slug}/
  • w.org/plugin/{$slug}

If the header has any other value, the API will not return a result and will ignore the plugin for update purposes.

Props dd32, DavidAnderson, meloniq, markjaquith, DrewAPicture, mweichert, design_dolphin, filosofo, sean212, nhuja, JeroenReumkens, infolu, dingdang, joyously, earnjam, williampatton, grapplerulrich, markparnell, apedog, afragen, miqrogroove, rmccue, crazycoders, jdgrimes, damonganto, joostdevalk, jorbin, georgestephanis, khromov, GeekStreetWP, jb510, Rarst, juliobox, Ipstenu, mikejolley, Otto42, gMagicScott, TJNowell, GaryJ, knutsp, mordauk, nvartolomei, aspexi, chriscct7, benoitchantre, ryno267, lev0, gregorlove, dougwollison, SergeyBiryukov.
See #14179, #23318, #32101.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/plugin.php

    r50788 r50921  
    4545 * @since 1.5.0
    4646 * @since 5.3.0 Added support for `Requires at least` and `Requires PHP` headers.
     47 * @since 5.8.0 Added support for `Update URI` header.
    4748 *
    4849 * @param string $plugin_file Absolute path to the main plugin file.
     
    6465 *     @type string $RequiresWP  Minimum required version of WordPress.
    6566 *     @type string $RequiresPHP Minimum required version of PHP.
     67 *     @type string $UpdateURI   ID of the plugin for update purposes, should be a URI.
    6668 * }
    6769 */
     
    8082        'RequiresWP'  => 'Requires at least',
    8183        'RequiresPHP' => 'Requires PHP',
     84        'UpdateURI'   => 'Update URI',
    8285        // Site Wide Only is deprecated in favor of Network.
    8386        '_sitewide'   => 'Site Wide Only',
Note: See TracChangeset for help on using the changeset viewer.