Make WordPress Themes

Opened 3 years ago

Closed 2 years ago

#25727 closed theme (not-approved)

THEME: Droided – 1.0

Reported by: LukeScotney Owned by: laurelfulford
Priority: new theme Keywords: theme-droided
Cc: luke@…


Droided - 1.0

Inspired by popular operating system Google Android. Droided offers bright, flat colours; stylised cards to hold your content and a full width header. Includes either full width or sidebar template for pages.

Theme URL - http://www.lukescotey.co.uk
Author URL - http://www.lukescotney.co.uk

SVN - https://themes.svn.wordpress.org/droided/1.0
ZIP - https://wordpress.org/themes/download/droided.1.0.zip?nostats=1


Ticket Summary Status Resolution Owner
#25727 THEME: Droided – 1.0 closed not-approved laurelfulford

(this ticket)


Change History (4)

#1 @laurelfulford
2 years ago

  • Owner set to laurelfulford
  • Status changed from new to reviewing

#2 @laurelfulford
2 years ago


I have reviewed your theme against this list and have included feedback below. The 'Required' items will need to be done before the theme can be approved.

The 'Recommended' items are only recommendations to improve your theme, and do not need to be completed to have your theme approved.

Once the 'Required' items are completed, the updated theme can be uploaded here:




  • No PHP or JS errors.
    • Getting a PHP error: Notice: Undefined property: stdClass::$attachment_id in /srv/www/wordpress-default/wp-content/themes/droided/functions.php on line 201
      The default image for the custom header doesn’t seem to work because of this. Why not display the custom header with header_image() like the example here? Or is the banner() function doing something different?
  • Sanitize everything. I found a couple spots that require sanitization - there may be more
    • article-post.php - get_author_posts_url() should be escaped with esc_url()
    • author.php get_the_author_meta(‘user_url’) should be escaped with esc_url()
    • functions.php, line 154 - get_comment_link($comment->comment_ID) should be escaped with esc_url() rather than htmlspecialchars()
    • functions.php, line 183 - escape get_template_directory_uri
  • No removing or modifying non-presentational hooks.
    • functions.php - adjacent_posts_rel_link_wp_head() should not be removed from the theme
  • There are specific CSS classes that need to be included in the theme - screen-reader-text is missing. You can use _s as a starting point for the styles: https://github.com/Automattic/_s/blob/master/style.css#L637-L663

Core Functionality and Features

  • Use WordPress functionality and features first, if available.
    • functions.php, line 207 - is there a reason why there’s improved_trim_excerpt() function, rather than just modifying the excerpt length, like here?
    • functions.php, line 228 - is there a reason why a new excerpt() function has been created, rather than just modifying the_excerpt() with filters? If it’s needed, it’s possible the new excerpt() function will need additional escaping.
  • No custom post types and no custom taxonomies
    • There’s a custom post type in functions.php, lines 71 - 88 - it's commented it out, but should be removed entirely


  • Any custom features, options or any limitations (for example menu restrictions), should be explained. Enough documentation should be provided.
    • It doesn’t seem to be possible to assign a menu to the theme, it just defaults to use all pages. If this is intentional, it would be good to include a note in the readme file.

      (If not intentional, it looks like the wp_nav_menu is missing the ‘theme_location’, which should match what’s been set in ‘register_nav_menus’. More info here).


  • All theme text strings should be marked for translation. I spotted strings that are missing this in the following files. Please see this page for more information.
    • archive.php
    • article-post.php
    • author.php
    • comments.php
    • elements-jsslider.php
    • elements-random.php
    • end.php
    • functions.php
    • tag.php
  • Include a text domain in style.css
    • text domain in style.css doesn’t match what’s used in the theme, or the theme slug. It should be ‘droided’ rather than ‘ls_droided'
  • Use a single unique theme slug – as the theme slug appears in style.css. I spotted a couple places where a different text domain is used; the rest of the theme should be checked.
    • functions.php, line 38 - theme slug is twentytwelve, but should be droided
    • article-post.php, line 27 - theme slug is twentyfifteen, should be droided.
  • A .POT file should be created for your theme, and added to a /languages folder. The name of the file should match the theme's text domain (eg. droided.pot).
    There are a couple options to generate the .pot file on the WP developer website. There are also free .pot editors, like EasyPo.


  • Declare licenses of any resources included such as fonts or images.
    • License information for all images and the Google fonts used in theme should be included in the readme file. The licenses on the image files need to be GPL compatible.

Options and Settings

  • Prefix all options, custom functions, custom global variables and custom constants with the theme-slug.
    • functions.php - custom functions should be prefixed with theme slug. For example my_register_sidebars() should be droided_register_sidebar()
    • Custom image sizes should be prefixed with the theme slug. For example, add_image_size('featured' should be add_image_size(‘droided-featured'


  • Don’t do things in a theme considered plugin territory.
    • Theme shouldn’t alter the appearance of WP Admin, like hiding ability to mark posts as 'sticky'. Please remove hide_sticky_option() and any related code.
    • Themes are not allowed to change the functionality of the text editor. my_add_next_page_button() and any related code needs to be removed.
    • The post views used by the Popular Posts is more like a plugin. Please remove getPostViews(), setPostViews() and related code.

Stylesheets and Scripts

  • No hard coding of scripts, styles and Favicons unless a browser workaround script. Everything should be enqueued. More information [ https://codex.wordpress.org/Function_Reference/wp_enqueue_script here].
    • header.php - please enqueue CSS
    • footer.php - please enqueue linked JavaScript, and JavaScript inline.
  • No minification of scripts or files unless provide original files.
    • Non-minified version of js/html5shiv.js should be included in theme.


  • There are several template specific things you should consider when certain ones are being used.
    • in footer.php, <?php wp_footer(); ?> should appear immediately before the closing </body> tag


  • Looks like the page will have malformed HTML when generated (opening <div>, but no closing div. No content or 404 message).


  • Recommend replacing get_the_tag_list() and get_the_category_list() with the_tags() and the_category(). the_tags() and the_category() already include escaping. I'll have to double check, but it's likely escaping will need to be added if get_the_tag_list() and get_the_category_list() are used.


  • wp_list_comments() attributes are formatted incorrectly - they should be in an array. See here.


  • Just for standardization, would recommend renaming this to sidebar.php, and using get_sidebar() to display.


  • Recommend using the_category() instead of echo get_the_category_list(). the_category() already includes escaping.


  • Would recommend making this toggle something available in the Customizer, rather than a file a user has to edit. If they have to add ‘hidden’ to this file, and you release and update to the theme, when they update the theme their changes will be lost.


  • line 153 - In custom comments get_avatar(), the '<path_to_url>’ is causing the avatars to display as broken images. This is because it's setting the default image literally to a file called ‘path_to_url’, which the theme can’t find.


  • It looks like element-jsslider.php is commented out in this file, and it’s the only place it appears in the theme. If not being used, would recommend removing it, the element-jsslider.php file, and the associated Flexslider JS and CSS.
  • Would recommend including ‘if’ check in Latest Posts query, so the header won’t be output if there are no matched posts
  • Commented out code near bottom of file (lines 61 - 64) - would recommend removing if not needed


  • Where is ‘headernight.jpg’ included in the theme? If not used, would recommend removing.


  • Right now the text Previous Post and Next Post will be written whether or not there is a previous or next post. You could try including the ‘Previous Post’ and ’Next Post’ text in the tag, like:

    <?php previous_post_link('<h2>' . __( 'Previous Post', 'droided' ) . '</h2> %link'); ?>

    (Please note that the ‘Previous Post’ text has also been marked for translation in this example).



  • There's a typo in the Theme URI, so it returns a 404 error. The Theme URI should link to a page with information about the theme - it’s something that could be added to your website, and the link could be updated to point there
  • Recommend enqueuing Google Fonts like this: http://themeshaper.com/2014/08/13/how-to-add-google-fonts-to-wordpress-themes/. There are instructions for enqueuing both on the website, and in the editor.


  • If possible, avoid passing HTML to translation strings. For example, article-post.php, line 23 could be 'before' => '<div class="page-links"><h2>' . __( 'Pages', 'droided’ ) . '</h2></br>',



  • When searching, it’s not possible to click on posts, because the titles aren’t links.

Next Steps

Once you've completed all of the 'Required' items we can continue with your review. Once the changes are done, just re-upload the theme on the page linked below, it will append to this ticket:


Also, if you have any questions at all about the above, just let me know!



#3 @laurelfulford
2 years ago


I just wanted to follow up on this ticket. It's been more than a week since I posted a review; I should have noted sooner, but it's important to comment on a ticket at least once every seven days, to keep it active. It doesn't mean all the fixes need to be done in a week - it could just be a note that you're still working through things, or have questions.

If a ticket remains inactive for more than seven days, it may be closed. If this happens, you can resubmit the theme to restart the review process.



#4 @laurelfulford
2 years ago

  • Resolution set to not-approved
  • Status changed from reviewing to closed


I'm closing this ticket, since it's been three weeks since the original review without a response.

If you would like to proceed with this theme submission, you just need to resubmit the theme here:




Note: See TracTickets for help on using tickets.