Skip to content

Instantly share code, notes, and snippets.

@Ipstenu

Ipstenu/faq Secret

Created August 4, 2013 19:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ipstenu/7e87ad21f1cc056da3c8 to your computer and use it in GitHub Desktop.
Save Ipstenu/7e87ad21f1cc056da3c8 to your computer and use it in GitHub Desktop.
WPOrg Repo Plugin Dev Faq
<h2>Developer FAQ</h2>
<h3 id="submissions">Questions about Submissions and Approval</h3>
<h4 id="approvals">How long does it take to get a plugin approved?</h4>
<p>There's no official average, as no two plugins are the same. If your plugin is small and all the code is correct, it shoud be approved within seven days. If your plugin has any code issues, it will take as long as it takes for you to correct the issues. Either way, you <em>will</em> get an email from plugins@wordpress.org with the status, so please add that to your email whitelist.</p>
<h4 id="">If my plugin has a problem, how long do I have to fix it?</h4>
<p>We allow for seven days from the time we contact you regarding the issue to when we expect you to be finished with corrections. It's one of the only ways we have to keep the queue small. If you need to take more than seven days, we'll reject your request and you can resubmit after you're done.</p>
<h4 id="">Are there specific things you're looking for that I should avoid?</h4>
<p>We look for some pretty obvious things, all of which are listed <a href="http://wordpress.org/plugins/about/guidelines/">in our guidelines</a>, and most can be summed up as 'Don't be a spammer,' but to touch on the ones people do the most:</p>
<ul>
<li>A readme<br />This is what displays your plugin information on the repository page. It should explain how to use the plugin, even if you think it's obvious.</li>
<li>Test the plugin with WP_DEBUG on<br />We do. You shoudl before you submit. If the plugin doesn't work, we push back.</li>
<li>Including jquery scripts<br />WordPress comes with a great number of <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_Scripts_Included_and_Registered_by_WordPress">default scripts</a> which we ask you not include in your plugin. Use ours.</li>
<li>Calling external files<br />All plugins should be as self contained as possible. Obviously, if your plugin relies on a service on your own servers (like Twitter), then calling JS remotely is fine. However if you're attempting to offload images and JS to a CDN without providing a service, we do not permit this.</li>
<li>'Powered By' links<br />All links on the forward facing aspect of a website must be "Opt In." This means your plugin may not default to link back to your site, or any other, on the part of the website that visitors see.</li>
<li>No phoning home<br />This is bigger than just not tracking users, but also not including files that send any data back to your servers (like iframes) unless that is a requirement for how your plugin works. Even then, we may ask about it.<li>
</ul>
<h4>Can I change my plugin's name?</h4>
<p>Yes and no. You can change the display name, but the 'slug' - that part of the plugin URL that is yours - cannot be changed. So if you submit "My cool tool" as the name, your URL will be <code>http://wordpress.org/plugins/my-cool-tool/</code> and that will also be the folder name on everyone's site.</p>
<h4>Are there names you don't permit?</h4>
<p>We don't allow 'WordPress' in plugin names as it's redundant and somewhat obvious that you're a WordPress plugin. We also generally disallow using 'plugin' for the same reasons. Only English letters and Arabic numbers are permitted in the slug, so you cannot have, for example, Chinese or Arabic letters in the URL, for compatibility issues. We don't permit version numbers in plugins either.</p>
<h4>I already have a plugin, but I want to re-do it! I just submit again right?</h4>
<p>We'd rather you actually just re-write the existing plugin. Make it a major version. We can't rename plugins, so your new one won't get any of the old users.</p>
<h3>Questions About The Repository</h2>
<h4 id="directory">In what directory should I put my files?</h4>
<p>Put your files directly in the <code>trunk/</code> directory of your repository. Whenever you release a new version, <a href="../svn/#task-3">tag that release</a> by copying the current trunk revision to a new subdirectory of the <code>tags/</code> directory.</p>
<p>Make sure you update <a href="../readme.txt"><code>trunk/readme.txt</code></a> to reflect the new stable tag.</p>
<p>Screenshot image files should ideally be put in the <code>assets/</code> directory (which you'll likely need to create) in the root of your SVN checkout. This will be on the same level as <code>tags/</code> and <code>trunk/</code>, for example. Alternatively, screenshots can be put in the directory of the tagged stable release (<code>trunk/</code> or the stable tag directory) (the old way). The <code>assets/</code> directory is preferred since the screenshots won't be packaged in the plugin's release zip files, saving unnecessary bloat for each download. Learn more from the feature's <a href="http://make.wordpress.org/plugins/2012/09/13/last-december-we-added-header-images-to-the/">announcement post</a>.</p>
<h4 id="subdirectory">Can&rsquo;t I put my files in a subdirectory of <code>trunk/</code>?</h4>
<p>You can, but it&rsquo;s silly. The <code>.zip</code> file the WordPress.org Plugin Directory creates will automatically wrap all your files inside a directory, so there is no need to put your files into a subdirectory.</p>
<p>If you have complicated plugin with lots of files, you can of course organize them into subdirectories, but the <a href="../readme.txt">readme file</a> and the root plugin file should go straight into <code>trunk/</code>.</p>
<h3 id="tag-names">How should I name my tags (a.k.a. releases)?</h3>
<p>Your subversion tags should look like version numbers. Specifically, they should only contain <strong>numbers and periods</strong>. <code>2.8.4</code> is a good lookin&rsquo; tag, <code>my neato releaso</code> is a bad lookin&rsquo; tag. Inflexible? Yup. Easy to handle and sanitize? You bet!</p>
<p>Note that we&rsquo;re talking about subversion tags here, not readme.txt tags. Those can obviously be any words you like.</p>
<h4 id="plugin-version">Can I specify what version of my plugin the WordPress.org Plugin Directory should use?</h4>
<p>Yes, by specifying the <code>Stable Tag</code> field in your trunk directory&rsquo;s <a href="../readme.txt">readme file</a>.</p>
<h4 id="data">Where does the WordPress.org Plugin Directory get its data?</h4>
<p>From the information you specify in the plugin file and in the <a href="../readme.txt">readme file</a>, and from the subversion repository itself.</p>
<dl>
<dt>Authors</dt>
<dd><code>Author</code> field from the plugin header and <code>Contributors</code> field from the readme file.</dd>
<dt>Version</dt>
<dd><code>Version</code> field from the plugin header.</dd>
<dt>Tags (as in categories)</dt>
<dd><code>Tags</code> field from the readme file.</dd>
<dt>Plugin Name</dt>
<dd>The <code>Plugin Name</code> from the readme file falling back on the <code>Plugin Name</code> specified in the plugin header.</dd>
<dt>Author and Plugin Homepages</dt>
<dd>The <code>Author URI</code> and <code>Plugin URI</code> fields of the plugin header.</dd>
<dt>Last updated time</dt>
<dd>Time of last check in to the appropriate directory (<code>trunk/</code> or the stable tag directory) <strong>after a version number change</strong>.</dd>
<dt>Creation time</dt>
<dd>Time of first check in.</dd>
</dl>
<h4>I made some changes to my SVN repository. How long will it take for the WordPress.org Plugin Directory to reflect those changes?</h4>
<p>The WordPress.org Plugin Directory updates every few minutes, however it may take longer for your changes to appear, depending on how deep the queue is.</p>
<h4>Can I include SVN externals in my plugin?</h4>
<p>Nope, sorry. You can add <a href="http://svnbook.red-bean.com/en/1.0/ch07s03.html">svn externals</a> to your repository, but they won&rsquo;t get added to the downloadable zip file.</p>
<h4>How do I make one of those cool banners for my plugin page?</h4>
<p>Start by creating an <code>assets/</code> directory in the root of your SVN checkout. This will be on the same level as <code>tags/</code> and <code>trunk/</code>, for example.</p>
<p>Inside that <code>assets/</code> directory, you can make a file named "banner-772x250.png" or "banner-772x250.jpg". The image must be exactly 772 pixels wide and 250 pixels tall. No GIFs.</p>
<p>To support high-DPI (aka "retina") displays, you can additionally make a file named "banner-1544x500.png" or "banner-1544x500.jpg". The image must be exactly 1544 pixels wide and 500 pixels tall. No GIFs. This image, if present, will only be served when the website detects that the viewing browser is on a high-DPI display. Read this feature's <a href="http://make.wordpress.org/core/2012/07/04/fun-with-high-dpi-displays/">announcement post</a> for more details and special notes about creating this image.</p>
<p>After you check in your new banner(s), it will appear the next time the plugin refreshes itself in the directory. This may take a few minutes.</p>
<p>For development and testing, you can add a URL parameter to your plugin's URL of "?banner_url=A_LINK_TO_YOUR_IMAGE" to preview what the page will look like with your own image. This will only work with your own plugins, you can not use this parameter on anybody else's plugins.</p>
<h4>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment