SlideShare a Scribd company logo
KICKING THE TIRES
A LOOK AT SELECTING PLUGINS WISELY
Susan Walker
March 17, 2016
“I LOOK AT THE RATING AND
THE NUMBER OF DOWNLOADS.
ISN’T THAT ENOUGH?”
Some Random Dude
KICKING THE TIRES
KICKING THE TIRES
WELL, IT’S A START.
Accessibility PHP Errors
HTML Validation
Mobile Friendliness
Download Time
SEO Friendliness
Browser Support
Minified Files
Memory Usage
WordPress APIs
Security Practices
CSS Rules
JavaScript Errors
Plugin Conflicts
Queries
UX
Caching
Translations
KICKING THE TIRES
There are a LOT of best practices to aim for.
WELL, IT’S A START.
“THIS IS OVERWHELMING.
WHERE DO I EVEN START?”
Dazed and Confused
KICKING THE TIRES
KICKING THE TIRES
DEFINE WHAT YOU NEED
First, clarify what you need in a plugin — the necessary
features, the optional ones and those that are undesirable.
KICKING THE TIRES
DEFINE WHAT YOU NEED
Be realistic. We all hope to find that one perfect plugin …
KICKING THE TIRES
DEFINE WHAT YOU NEED
… but what we end up with will invariably be more modest.
KICKING THE TIRES
DEFINE WHAT YOU NEED
Often the goal is to recognize and avoid the worst clunkers.
KICKING THE TIRES
AUDITED PLUGINS
Here are a couple of sites with
lists of plugins that have been
tested thoroughly by others.
▸Tidy Repo
tidyrepo.com
▸Sites
sites.usa.gov/plugins/
“THESE SITES ARE AWESOME,
BUT I DIDN’T FIND WHAT I NEED.
WHAT DO I DO?”
Perplexed in Philly
KICKING THE TIRES
KICKING THE TIRES
START SEARCHING
▸Search the repository using
different terms
▸Do a Google search
▸Read “best of” lists and plugin
comparisons
▸Check professional forums
▸Ask colleagues
KICKING THE TIRES
START SEARCHING
Production web sites are like
fingerprints; no two are exactly
alike. The ideal solution for
someone else’s web site may
not be what’s best for you.
Assuming you’ve found a few possible candidates, it’s time to
look at them more closely.
▸Search the plugin name + the words “error”, “bug”, “issue”
and “plugin conflict”
▸Search the plugin name + the word “security”
▸Read the tickets on the plugin support forum
▸Get an idea of how often the plugin is updated
KICKING THE TIRES
DIG DEEPER
KICKING THE TIRES
NOW TRY IT OUT
Install and activate the plugin on a test site before you try it on
your production web site. Make notes (a sample worksheet is
available from susanwrotethis.com):
▸What interface elements does it add to admin?
▸What does it output on the front end?
▸How well does it perform?
▸Are there any other considerations?
KICKING THE TIRES
NOW TRY IT OUT
Take the time to add lots of content and work through your
best guess for settings.
KICKING THE TIRES
NOW TRY IT OUT
Solicit the help of the site’s users if you can. If you do, assign
them specific tasks to perform, with a minimum number of
repetitions. When you simply ask them to log in and look at a
new feature, looking is all they’re likely to do.
KICKING THE TIRES
NOW TRY IT OUT
Test the plugin with different user roles. An Administrator
account may see something entirely different from an Author
account.
Plugins with custom capabilities may default to very strict
access or very broad access. If you don’t check you can create
user access problems or open up a feature to anyone.
KICKING THE TIRES
NOW TRY IT OUT
Does the plugin have too many settings to manage easily?
KICKING THE TIRES
NOW TRY IT OUT
Does the admin interface confuse your users during testing?
KICKING THE TIRES
TEST PLUGINS WITH PLUGINS
▸Plugin Performance Profiler
Reports on how plugins impact page performance
▸Plugin Profiler
Reports on plugin performance times
▸Query Monitor
Identifies queries, HTTP requests, PHP warnings
▸Plugin Inspector
Looks for vulnerabilities and deprecated code
KICKING THE TIRES
TEST PLUGINS WITH PLUGINS
▸Plugin Security Scanner
Checks plugins against the WPScan Vulnerability Database
▸WP Hooker
Reports on which hooks are firing, with time from start
▸What’s Running
Lists require() calls made in a page
▸Get Options
Retrieves and lists all the options for a site
“THAT’S A LOT OF TESTING.
ARE WE DONE YET?”
Some Other Guy
KICKING THE TIRES
KICKING THE TIRES
TEST WITH EXTERNAL TOOLS
▸WebPagetest, www.webpagetest.org
Tests web site performance
▸W3C Validator, validator.w3.org
Checks your web page for valid HTML code
▸CSS Lint, csslint.net
Analyzes CSS code quality
▸JS Lint, www.jslint.com
Reports on JavaScript code quality
KICKING THE TIRES
TEST WITH EXTERNAL TOOLS
▸WAVE Web Accessibility Tool, wave.webaim.org
Tests pages for accessibility compliance
▸Mobile Emulator, mobiletest.me
Lets you see how pages look on different devices
▸SEO SiteCheckup, seositecheckup.com
Analyzes pages for search engine optimization
▸PHP Code Checker, phpcodechecker.com
Examines PHP code
KICKING THE TIRES
DON’T FORGET THE BASICS
▸Chrome console
Especially helpful detecting JavaScript errors
▸Link checkers
Look for 404 errors generated by the plugin
▸Google Webmaster Tools
On production it’s useful identifying subtle issues
▸WP_DEBUG
Enable this in wp_config.php to display PHP errors
KICKING THE TIRES
UNDERSTAND THE LIMITS
There’s only one way to be sure what a plugin really does.
KICKING THE TIRES
LOOK IN THE CODE
Download and unzip a copy of the plugin. Check out the
readme.txt file and any other text files with plugin info.
Running a series of text searches for common keywords in the
code files can tell you a lot, even if you don’t know code.
KICKING THE TIRES
LOOK IN THE CODE
new WP_Query is used in custom queries of the posts table
and is normally related to the display of content.
$wpdb-> shows up when a custom query of the database is in
the code.
CREATE TABLE (case insensitive) indicates that one or more
tables is being added to the database.
KICKING THE TIRES
LOOK IN THE CODE
wp_enqueue_ indicates script or CSS files are being added.
wp_schedule_ functions are called to add cron jobs.
register_ creates something that will be used elsewhere;
examples include register_sidebar, register_post_type and
register_taxonomy.
KICKING THE TIRES
LOOK IN THE CODE
add_ comes up in many different contexts:
add_option adds a new entry to the options table.
add_meta adds a new entry to the postmeta table.
add_menu_page adds a page to the admin menu.
add_cap adds a capability to a role or a specific user.
add_shortcode creates a new shortcode.
KICKING THE TIRES
LOOK IN THE CODE
Most of the common keywords in WordPress function names
have corresponding functions to undo something:
wp_dequeue_
wp_unschedule_
unregister_ or deregiser_
delete_ or remove_
KICKING THE TIRES
LOOK IN THE CODE
Six of the most powerful functions in WordPress involve
actions and filters. These can be used to modify not only
WordPress core behaviors but modify other plugins as well.
KICKING THE TIRES
LOOK IN THE CODE
add_action lets you add functionality to a code sequence.
remove_action allows you to remove functionality.
do_action is the point when that functionality executes.
add_filter allows you to add functions to modify output.
remove_filter allows you to remove modification functions.
apply_filters is when the modifications are applied.
“PLEASE PLEASE PLEASE
DON’T MAKE ME LOOK AT ANY
MORE CODE THINGIES.”
Gnosiophobe
KICKING THE TIRES
KICKING THE TIRES
DON’T PANIC
It’s OK, the code went away. Pause and catch your breath.
KICKING THE TIRES
FINALLY, UNINSTALL
Did it leave a lot of garbage behind? Things to look for:
‣ Orphaned tables
‣ Custom roles and capabilities
‣ Custom post types and postmeta
‣ Options
‣ Files
‣ Cron jobs
KICKING THE TIRES
POSSIBLE OUTCOMES
1. You found at least one suitable plugin.
2. You didn’t find a suitable plugin, in which case you have to
build your own or hire a developer.
3. You found a plugin with minor issues that its developer may
be able to resolve.
4. You found a plugin that will partially suit your needs and
that you can extend with action and filter hooks.
5. You realize you had a bad idea, and you drop it.
KICKING THE TIRES
POSSIBLE OUTCOMES
1. You found at least one suitable plugin.
2. You didn’t find a suitable plugin, in which case you have to
build your own or hire a developer.
3. You found a plugin with minor issues that its developer may
be able to resolve.
4. You found a plugin that will partially suit your needs and
that you can extend with action and filter hooks.
5. You realize you had a bad idea, and you drop it.
KICKING THE TIRES
POSSIBLE OUTCOMES
1. You found at least one suitable plugin.
2. You didn’t find a suitable plugin, in which case you have to
build your own or hire a developer.
3. You found a plugin with minor issues that its developer may
be able to resolve.
4. You found a plugin that will partially suit your needs and
that you can extend with action and filter hooks.
5. You realize you had a bad idea, and you drop it.
KICKING THE TIRES
HELP DEVELOPERS HELP YOU
When you find bugs or coding errors, report them on the
plugin’s support forum. Include as much data as possible,
including the plugin version and WP core version, whether
you’re on multisite and whether WP_DEBUG is enabled.
Try to rule out the theme or another plugin as a possible
source of a problem.
If there are specific code errors, the exact error, including the
file and line number if provided, can speed up resolution of a
support ticket.
KICKING THE TIRES
HELP DEVELOPERS HELP YOU
Taking the time to provide courteous, factual information about
your problem can gradually build a positive working
relationship that benefits you, the developer and other users of
the plugin.
“NOW ARE WE DONE?”
It’s Thursday and I Missed My Nap
KICKING THE TIRES
YES, WE ARE. THANK YOU!
Susan Walker
susanwrotethis.com
@susanwrotethis
KICKING THE TIRES
IMAGE CREDITS
‣ Cover Slide: tire by Grimm Pics
https://flic.kr/p8PybuA, CC BY 2.0
‣ Slide 7: Neuschwanstein by Paula Funnell
https://flic.kr/p/dbjzny, CC BY-NC-ND 2.0
‣ Slide 8: Craftsman House, Wallingford by brewbooks
https://flic.kr/p/njQ5f, CC BY-SA 2.0
‣ Slide 9: Fixer-upper (Abandoned Homestead) by J.N. Stuart
https://flic.kr/p/4KsDZh, CC BY-NC-ND 2.0
‣ Slide 10: Ruby red pens by Marcin Bajer
https://flic.kr/p/87dMAs, CC BY-NC 2.0
KICKING THE TIRES
IMAGE CREDITS
‣ Slide 12: 51 by Sergey Norin
https://flic.kr/p/7EA74a, CC BY 2.0
‣ Slide 13: Fingerprint by Angelo Pereira
https://flic.kr/p/3KjRyr, CC BY-NC-ND 2.0
‣ Slide 19: Switches by Jol Ito
https://flic.kr/p/KG5Te, CC BY 2.0
‣ Slide 20: Confused by Sarah
https://flic.kr/p/6eBt8y, CC BY 2.0
‣ Slide 27: Rube Goldberg Machine by Jeff Kubina
https://flic.kr/p/qCoDG, CC BY-SA 2.0
KICKING THE TIRES
IMAGE CREDITS
‣ Slide 36: Chiaroscuro Guinea Pig by TRONOSKI Photography
https://flic.kr/p/bkQ2f3, CC BY-NC-ND 2.0
Creative Commons image licenses at creativecommons.org/licenses/.

More Related Content

Recently uploaded

OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfAI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
Techgropse Pvt.Ltd.
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 

Recently uploaded (20)

OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfAI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani
 

Featured (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

Kicking the Tires: A Look at Selecting Plugins Wisely

  • 1. KICKING THE TIRES A LOOK AT SELECTING PLUGINS WISELY Susan Walker March 17, 2016
  • 2. “I LOOK AT THE RATING AND THE NUMBER OF DOWNLOADS. ISN’T THAT ENOUGH?” Some Random Dude KICKING THE TIRES
  • 3. KICKING THE TIRES WELL, IT’S A START. Accessibility PHP Errors HTML Validation Mobile Friendliness Download Time SEO Friendliness Browser Support Minified Files Memory Usage WordPress APIs Security Practices CSS Rules JavaScript Errors Plugin Conflicts Queries UX Caching Translations
  • 4. KICKING THE TIRES There are a LOT of best practices to aim for. WELL, IT’S A START.
  • 5. “THIS IS OVERWHELMING. WHERE DO I EVEN START?” Dazed and Confused KICKING THE TIRES
  • 6. KICKING THE TIRES DEFINE WHAT YOU NEED First, clarify what you need in a plugin — the necessary features, the optional ones and those that are undesirable.
  • 7. KICKING THE TIRES DEFINE WHAT YOU NEED Be realistic. We all hope to find that one perfect plugin …
  • 8. KICKING THE TIRES DEFINE WHAT YOU NEED … but what we end up with will invariably be more modest.
  • 9. KICKING THE TIRES DEFINE WHAT YOU NEED Often the goal is to recognize and avoid the worst clunkers.
  • 10. KICKING THE TIRES AUDITED PLUGINS Here are a couple of sites with lists of plugins that have been tested thoroughly by others. ▸Tidy Repo tidyrepo.com ▸Sites sites.usa.gov/plugins/
  • 11. “THESE SITES ARE AWESOME, BUT I DIDN’T FIND WHAT I NEED. WHAT DO I DO?” Perplexed in Philly KICKING THE TIRES
  • 12. KICKING THE TIRES START SEARCHING ▸Search the repository using different terms ▸Do a Google search ▸Read “best of” lists and plugin comparisons ▸Check professional forums ▸Ask colleagues
  • 13. KICKING THE TIRES START SEARCHING Production web sites are like fingerprints; no two are exactly alike. The ideal solution for someone else’s web site may not be what’s best for you.
  • 14. Assuming you’ve found a few possible candidates, it’s time to look at them more closely. ▸Search the plugin name + the words “error”, “bug”, “issue” and “plugin conflict” ▸Search the plugin name + the word “security” ▸Read the tickets on the plugin support forum ▸Get an idea of how often the plugin is updated KICKING THE TIRES DIG DEEPER
  • 15. KICKING THE TIRES NOW TRY IT OUT Install and activate the plugin on a test site before you try it on your production web site. Make notes (a sample worksheet is available from susanwrotethis.com): ▸What interface elements does it add to admin? ▸What does it output on the front end? ▸How well does it perform? ▸Are there any other considerations?
  • 16. KICKING THE TIRES NOW TRY IT OUT Take the time to add lots of content and work through your best guess for settings.
  • 17. KICKING THE TIRES NOW TRY IT OUT Solicit the help of the site’s users if you can. If you do, assign them specific tasks to perform, with a minimum number of repetitions. When you simply ask them to log in and look at a new feature, looking is all they’re likely to do.
  • 18. KICKING THE TIRES NOW TRY IT OUT Test the plugin with different user roles. An Administrator account may see something entirely different from an Author account. Plugins with custom capabilities may default to very strict access or very broad access. If you don’t check you can create user access problems or open up a feature to anyone.
  • 19. KICKING THE TIRES NOW TRY IT OUT Does the plugin have too many settings to manage easily?
  • 20. KICKING THE TIRES NOW TRY IT OUT Does the admin interface confuse your users during testing?
  • 21. KICKING THE TIRES TEST PLUGINS WITH PLUGINS ▸Plugin Performance Profiler Reports on how plugins impact page performance ▸Plugin Profiler Reports on plugin performance times ▸Query Monitor Identifies queries, HTTP requests, PHP warnings ▸Plugin Inspector Looks for vulnerabilities and deprecated code
  • 22. KICKING THE TIRES TEST PLUGINS WITH PLUGINS ▸Plugin Security Scanner Checks plugins against the WPScan Vulnerability Database ▸WP Hooker Reports on which hooks are firing, with time from start ▸What’s Running Lists require() calls made in a page ▸Get Options Retrieves and lists all the options for a site
  • 23. “THAT’S A LOT OF TESTING. ARE WE DONE YET?” Some Other Guy KICKING THE TIRES
  • 24. KICKING THE TIRES TEST WITH EXTERNAL TOOLS ▸WebPagetest, www.webpagetest.org Tests web site performance ▸W3C Validator, validator.w3.org Checks your web page for valid HTML code ▸CSS Lint, csslint.net Analyzes CSS code quality ▸JS Lint, www.jslint.com Reports on JavaScript code quality
  • 25. KICKING THE TIRES TEST WITH EXTERNAL TOOLS ▸WAVE Web Accessibility Tool, wave.webaim.org Tests pages for accessibility compliance ▸Mobile Emulator, mobiletest.me Lets you see how pages look on different devices ▸SEO SiteCheckup, seositecheckup.com Analyzes pages for search engine optimization ▸PHP Code Checker, phpcodechecker.com Examines PHP code
  • 26. KICKING THE TIRES DON’T FORGET THE BASICS ▸Chrome console Especially helpful detecting JavaScript errors ▸Link checkers Look for 404 errors generated by the plugin ▸Google Webmaster Tools On production it’s useful identifying subtle issues ▸WP_DEBUG Enable this in wp_config.php to display PHP errors
  • 27. KICKING THE TIRES UNDERSTAND THE LIMITS There’s only one way to be sure what a plugin really does.
  • 28. KICKING THE TIRES LOOK IN THE CODE Download and unzip a copy of the plugin. Check out the readme.txt file and any other text files with plugin info. Running a series of text searches for common keywords in the code files can tell you a lot, even if you don’t know code.
  • 29. KICKING THE TIRES LOOK IN THE CODE new WP_Query is used in custom queries of the posts table and is normally related to the display of content. $wpdb-> shows up when a custom query of the database is in the code. CREATE TABLE (case insensitive) indicates that one or more tables is being added to the database.
  • 30. KICKING THE TIRES LOOK IN THE CODE wp_enqueue_ indicates script or CSS files are being added. wp_schedule_ functions are called to add cron jobs. register_ creates something that will be used elsewhere; examples include register_sidebar, register_post_type and register_taxonomy.
  • 31. KICKING THE TIRES LOOK IN THE CODE add_ comes up in many different contexts: add_option adds a new entry to the options table. add_meta adds a new entry to the postmeta table. add_menu_page adds a page to the admin menu. add_cap adds a capability to a role or a specific user. add_shortcode creates a new shortcode.
  • 32. KICKING THE TIRES LOOK IN THE CODE Most of the common keywords in WordPress function names have corresponding functions to undo something: wp_dequeue_ wp_unschedule_ unregister_ or deregiser_ delete_ or remove_
  • 33. KICKING THE TIRES LOOK IN THE CODE Six of the most powerful functions in WordPress involve actions and filters. These can be used to modify not only WordPress core behaviors but modify other plugins as well.
  • 34. KICKING THE TIRES LOOK IN THE CODE add_action lets you add functionality to a code sequence. remove_action allows you to remove functionality. do_action is the point when that functionality executes. add_filter allows you to add functions to modify output. remove_filter allows you to remove modification functions. apply_filters is when the modifications are applied.
  • 35. “PLEASE PLEASE PLEASE DON’T MAKE ME LOOK AT ANY MORE CODE THINGIES.” Gnosiophobe KICKING THE TIRES
  • 36. KICKING THE TIRES DON’T PANIC It’s OK, the code went away. Pause and catch your breath.
  • 37. KICKING THE TIRES FINALLY, UNINSTALL Did it leave a lot of garbage behind? Things to look for: ‣ Orphaned tables ‣ Custom roles and capabilities ‣ Custom post types and postmeta ‣ Options ‣ Files ‣ Cron jobs
  • 38. KICKING THE TIRES POSSIBLE OUTCOMES 1. You found at least one suitable plugin. 2. You didn’t find a suitable plugin, in which case you have to build your own or hire a developer. 3. You found a plugin with minor issues that its developer may be able to resolve. 4. You found a plugin that will partially suit your needs and that you can extend with action and filter hooks. 5. You realize you had a bad idea, and you drop it.
  • 39. KICKING THE TIRES POSSIBLE OUTCOMES 1. You found at least one suitable plugin. 2. You didn’t find a suitable plugin, in which case you have to build your own or hire a developer. 3. You found a plugin with minor issues that its developer may be able to resolve. 4. You found a plugin that will partially suit your needs and that you can extend with action and filter hooks. 5. You realize you had a bad idea, and you drop it.
  • 40. KICKING THE TIRES POSSIBLE OUTCOMES 1. You found at least one suitable plugin. 2. You didn’t find a suitable plugin, in which case you have to build your own or hire a developer. 3. You found a plugin with minor issues that its developer may be able to resolve. 4. You found a plugin that will partially suit your needs and that you can extend with action and filter hooks. 5. You realize you had a bad idea, and you drop it.
  • 41. KICKING THE TIRES HELP DEVELOPERS HELP YOU When you find bugs or coding errors, report them on the plugin’s support forum. Include as much data as possible, including the plugin version and WP core version, whether you’re on multisite and whether WP_DEBUG is enabled. Try to rule out the theme or another plugin as a possible source of a problem. If there are specific code errors, the exact error, including the file and line number if provided, can speed up resolution of a support ticket.
  • 42. KICKING THE TIRES HELP DEVELOPERS HELP YOU Taking the time to provide courteous, factual information about your problem can gradually build a positive working relationship that benefits you, the developer and other users of the plugin.
  • 43. “NOW ARE WE DONE?” It’s Thursday and I Missed My Nap KICKING THE TIRES
  • 44. YES, WE ARE. THANK YOU! Susan Walker susanwrotethis.com @susanwrotethis
  • 45. KICKING THE TIRES IMAGE CREDITS ‣ Cover Slide: tire by Grimm Pics https://flic.kr/p8PybuA, CC BY 2.0 ‣ Slide 7: Neuschwanstein by Paula Funnell https://flic.kr/p/dbjzny, CC BY-NC-ND 2.0 ‣ Slide 8: Craftsman House, Wallingford by brewbooks https://flic.kr/p/njQ5f, CC BY-SA 2.0 ‣ Slide 9: Fixer-upper (Abandoned Homestead) by J.N. Stuart https://flic.kr/p/4KsDZh, CC BY-NC-ND 2.0 ‣ Slide 10: Ruby red pens by Marcin Bajer https://flic.kr/p/87dMAs, CC BY-NC 2.0
  • 46. KICKING THE TIRES IMAGE CREDITS ‣ Slide 12: 51 by Sergey Norin https://flic.kr/p/7EA74a, CC BY 2.0 ‣ Slide 13: Fingerprint by Angelo Pereira https://flic.kr/p/3KjRyr, CC BY-NC-ND 2.0 ‣ Slide 19: Switches by Jol Ito https://flic.kr/p/KG5Te, CC BY 2.0 ‣ Slide 20: Confused by Sarah https://flic.kr/p/6eBt8y, CC BY 2.0 ‣ Slide 27: Rube Goldberg Machine by Jeff Kubina https://flic.kr/p/qCoDG, CC BY-SA 2.0
  • 47. KICKING THE TIRES IMAGE CREDITS ‣ Slide 36: Chiaroscuro Guinea Pig by TRONOSKI Photography https://flic.kr/p/bkQ2f3, CC BY-NC-ND 2.0 Creative Commons image licenses at creativecommons.org/licenses/.