在Github上创建发布zip文件,其中没有标记名称

时间:2014-05-13 22:06:03

标签: php wordpress git github release

我在Github上有这个回购 - https://github.com/ronakg/awesome-flickr-gallery-plugin。它是一个wordpress插件,用于根据存储在Flickr上的照片创建照片库。

现在我想要实现的是 - 当我为我的插件创建一个新的发布zip时,它不应该使用标记名称。

例如,我创建版本3.5.0和3.6.0。两个版本的文件夹结构应该相同。

awesome-flickr-gallery-plugin
  /index.php
  /README.txt
  .
  .

现在它创建了这样的发布zip文件:

awesome-flickr-gallery-plugin-3.5.0
   /index.php
   /README.txt
   .
   .

这对我来说非常重要,因为我想直接为我的用户提供这个zip文件作为WordPress插件更新。这种不同的文件结构打破了WordPress中的插件更新过程。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我面对a similar problem前缀-master,并使用以下过滤器upgrader_source_selection解决。我的存储库是github-plugin-for-wordpress,请根据您自己的情况进行调整。

/**
 * Access this plugin’s working instance
 *
 * @wp-hook plugins_loaded
 * @return  object of this class
 */
public function plugin_setup()
{
    add_filter( 'upgrader_source_selection', array( $this, 'rename_github_zip' ), 1, 3);
}

/**
 * Removes the prefix "-master" when updating from GitHub zip files
 * 
 * See: https://github.com/YahnisElsts/plugin-update-checker/issues/1
 * 
 * @param string $source
 * @param string $remote_source
 * @param object $thiz
 * @return string
 */
public function rename_github_zip( $source, $remote_source, $thiz )
{
    if(  strpos( $source, 'github-plugin-for-wordpress') === false )
        return $source;

    $path_parts = pathinfo( $source );
    $newsource = trailingslashit( $path_parts['dirname'] ) . trailingslashit( 'github-plugin-for-wordpress' );
    rename( $source, $newsource );
    return $newsource;
}