SlideShare a Scribd company logo
1 of 55
IMPROVING EASE OF USE WITH
WORDPRESS ADMIN DASHBOARD
OVERVIEW
OVERVIEW


1. User Roles.
OVERVIEW


1. User Roles.
2. The Login Screen.
OVERVIEW


1. User Roles.
2. The Login Screen.
3. The Dashboard.
OVERVIEW


1.   User Roles.
2.   The Login Screen.
3.   The Dashboard.
4.   The Content Editor.
OVERVIEW


1.   User Roles.
2.   The Login Screen.
3.   The Dashboard.
4.   The Content Editor.
5.   Other
USER ROLES



- Create a “clean” admin account
- Set-up the main user as an editor
- Use the current_user_can() function:

    if ( !current_user_can( 'administrator' ) ) {
        //do something awesome here
    }
THE LOGIN SCREEN
THE LOGIN SCREEN




Hook: login_head
THE DASHBOARD

Tidy up...
THE DASHBOARD

Tidy up...

- Does the client need this item?
THE DASHBOARD

Tidy up...

- Does the client need this item?
- Will the client use this item?
THE DASHBOARD

Tidy up...

- Does the client need this item?
- Will the client use this item?
- Is this item an enhancement?
THE DASHBOARD
THE DASHBOARD




Hook: wp_dashboard_setup
THE DASHBOARD




Hook: wp_dashboard_setup
// Globalise the Meta Box Widgets Array
global $wp_meta_boxes;
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
THE DASHBOARD
THE DASHBOARD
THE DASHBOARD
THE DASHBOARD
                Hook: admin_menu
THE DASHBOARD
                Hook: admin_menu
                // Globalise the Menu Array
                global $menu;
                ...
                unset( $menu[key($menu)] );
                ...
THE DASHBOARD
THE DASHBOARD
                // Add Theme Editing Capabilities
                $role_object = get_role( 'editor' );
                $role_object->add_cap( 'edit_theme_options' );
THE DASHBOARD
THE DASHBOARD
                Hook: admin_head
THE DASHBOARD
                Hook: admin_head
                // Globalise the Submenu Array
                global $submenu;
                ...
                unset( $submenu['themes.php'][7] );
                ...
THE CONTENT EDITOR
THE CONTENT EDITOR
THE CONTENT EDITOR
                     Hook: admin_head
THE CONTENT EDITOR
                     Hook: admin_head
                     ...
                     <style>
                     #edit-slug-box strong,
                     #sample-permalink,
                     #edit-slug-buttons
                     {display:none;}
                     </style>
                     ...
THE CONTENT EDITOR
THE CONTENT EDITOR
THE CONTENT EDITOR
THE CONTENT EDITOR




Hook: tiny_mce_before_init
THE CONTENT EDITOR




Hook: tiny_mce_before_init
// Force paste as plain text
...
$init['oninit'] = 'setPlainText';
THE CONTENT EDITOR
THE CONTENT EDITOR
THE CONTENT EDITOR
THE CONTENT EDITOR




Hook: admin_init
THE CONTENT EDITOR




Hook: admin_init
// Add custom meta box
add_meta_box( $id, $title, $callback, ... );
THE CONTENT EDITOR
THE CONTENT EDITOR
THE CONTENT EDITOR


// render any shortcode and convert new lines to break
nl2br( $string ) # retains line breaks
do_shortcode( $content ) # applies any shortcode(s) in $content

...
$meta = nl2br( get_post_meta( $postid, $field, $single = true ) );
return do_shortcode($meta);
...
THE CONTENT EDITOR
THE CONTENT EDITOR
THE CONTENT EDITOR




Filter: widget_text
THE CONTENT EDITOR




Filter: widget_text
// render any shortcode in widgets.
add_filter('widget_text', 'do_shortcode');
OTHER CONSIDERATIONS
OTHER CONSIDERATIONS

Allow for Errors
<a href="facebook.com">Facebook</a> <!-- Will return an error -->

// http://www.facebook.com, www.facebook.com, facebook.com will all
work.
if( strpos( $url, 'http://' ) === false )
    return 'http://' . $url;
else
    return $url
...
OTHER CONSIDERATIONS

Allow for Errors
<a href="facebook.com">Facebook</a> <!-- Will return an error -->

// http://www.facebook.com, www.facebook.com, facebook.com will all
work.
if( strpos( $url, 'http://' ) === false )
    return 'http://' . $url;
else
    return $url
...



Consider creating a plugin
CONCLUSION
CONCLUSION




 If it is difficult to update, it won’t get updated.
~fin.

More Related Content

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 

Featured

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
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 HealthThinkNow
 
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.pdfmarketingartwork
 
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 2024Neil 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 2024Albert 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 InsightsKurio // 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 2024Search 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 summarySpeakerHub
 
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 IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit 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 managementMindGenius
 
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 WorkGetSmarter
 

Featured (20)

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
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
 

Improving Ease of Use with the WordPress Admin

Editor's Notes

  1. As developers we sometimes forget that just because a system like WordPress makes updating a site infinitely more easy for us, it can still be alien to the end user.\n\nIn an ideal world, our clients and customers would understand basic html, be able to assign classes to paragraphs and always apply the correct ones, they will know how to crop and edit images, and know how to correctly apply header tags. \n\nMost importantly, they will stop at this, and never learn any other coding thus leaving a big demand for us as developers. \n\nIn the real world however, our clients vary between users who don&apos;t know how to get online if the &apos;big blue E thingy&apos; is deleted from their desktops and use google to type URL&amp;#x2019;s, through to those that are comfortable using a PC, through to clients who have used WordPress before, can find their way around and are happy adding and editing content. In addition, we need to consider ease of use for users. However technically adept you are, realistically, you are not going to update your site regularly if its an overly-complex procedure.\n
  2. We can break the user&apos;s backend experience down into five elements.&amp;#xA0;\n\nThe role of user.\nTheir first point of contact; The login screen.\nThe first thing they encounter once logged in; The dashboard (and menus).\nThe main task they will be doing; Adding and editing content.\nWe will end with other considerations we need to make.\n
  3. We can break the user&apos;s backend experience down into five elements.&amp;#xA0;\n\nThe role of user.\nTheir first point of contact; The login screen.\nThe first thing they encounter once logged in; The dashboard (and menus).\nThe main task they will be doing; Adding and editing content.\nWe will end with other considerations we need to make.\n
  4. We can break the user&apos;s backend experience down into five elements.&amp;#xA0;\n\nThe role of user.\nTheir first point of contact; The login screen.\nThe first thing they encounter once logged in; The dashboard (and menus).\nThe main task they will be doing; Adding and editing content.\nWe will end with other considerations we need to make.\n
  5. We can break the user&apos;s backend experience down into five elements.&amp;#xA0;\n\nThe role of user.\nTheir first point of contact; The login screen.\nThe first thing they encounter once logged in; The dashboard (and menus).\nThe main task they will be doing; Adding and editing content.\nWe will end with other considerations we need to make.\n
  6. We can break the user&apos;s backend experience down into five elements.&amp;#xA0;\n\nThe role of user.\nTheir first point of contact; The login screen.\nThe first thing they encounter once logged in; The dashboard (and menus).\nThe main task they will be doing; Adding and editing content.\nWe will end with other considerations we need to make.\n
  7. As a starting point, we can provide the client with an admin login to keep hold of in case they decide to use another developer in the future, or we get run over by a bus.&amp;#xA0;\n\nWe will leave that admin backend alone for our/or another developer&amp;#x2019;s use and set our current user up as an editor.&amp;#xA0;\n\nAs such we will wrap any of our custom backend functions with the current_user_can() function and we will use it so that the function will only apply if the user is not an administrator\n
  8. Changing the login screen logo is a very simple process, but still worth considering. After all, as developers its familiar to us, but if you are logging into your website for the first time having never seen WordPress before, anything familiar to hold on to will help, so why not help that first time user out by adding their logo to the login screen. At the very least, they now know they&apos;re in the right place. To do this we add an action to the&amp;#xA0;login_head hook that adds some custom css that displays the logo.\n\nNote that we won&apos;t use the current_user_can() function here as at this point, the user obviously isn&apos;t logged in!\n
  9. Having eased the client into the backend with a nice friendly login screen, the last thing you want to do is terrify them with a page cluttered with info they don&apos;t need.\nTidy up the dashboard \nLook at the items on the dashboard, and ask yourself:\n\n1. Does my client need any of these,&amp;#xA0;\n2. Will they make use of them,&amp;#xA0;\n3. Do they enhance the backend.&amp;#xA0;\n\nShould the answer to these questions be a resounding &apos;no&apos;, then we need to tidy the dashboard up. Obviously we can remove all the visible items via the screen options, but these only apply on a user by user basis. If your client will be adding users, you may want to consider de-registering some, or all, of the dashboard widgets. \n\nThis probably doesn&apos;t come under the realms of &apos;best practice&apos; as we are taking away the clients choice, but for the purposes of the presentation, we will assume that the client:\n\nA. wants to be spoon-fed with only what they need.&amp;#xA0;\nB. The client wants a fairly static site, with no commenting.\nC. Has no interest in incoming links.\nD. Gets frightened by technical terminology and the word &apos;plugin&apos; scares them.\nE. The client may add new users from time to time and the layout for their dashboard must be the same\n&amp;#xA0;\n\n\n
  10. Having eased the client into the backend with a nice friendly login screen, the last thing you want to do is terrify them with a page cluttered with info they don&apos;t need.\nTidy up the dashboard \nLook at the items on the dashboard, and ask yourself:\n\n1. Does my client need any of these,&amp;#xA0;\n2. Will they make use of them,&amp;#xA0;\n3. Do they enhance the backend.&amp;#xA0;\n\nShould the answer to these questions be a resounding &apos;no&apos;, then we need to tidy the dashboard up. Obviously we can remove all the visible items via the screen options, but these only apply on a user by user basis. If your client will be adding users, you may want to consider de-registering some, or all, of the dashboard widgets. \n\nThis probably doesn&apos;t come under the realms of &apos;best practice&apos; as we are taking away the clients choice, but for the purposes of the presentation, we will assume that the client:\n\nA. wants to be spoon-fed with only what they need.&amp;#xA0;\nB. The client wants a fairly static site, with no commenting.\nC. Has no interest in incoming links.\nD. Gets frightened by technical terminology and the word &apos;plugin&apos; scares them.\nE. The client may add new users from time to time and the layout for their dashboard must be the same\n&amp;#xA0;\n\n\n
  11. Having eased the client into the backend with a nice friendly login screen, the last thing you want to do is terrify them with a page cluttered with info they don&apos;t need.\nTidy up the dashboard \nLook at the items on the dashboard, and ask yourself:\n\n1. Does my client need any of these,&amp;#xA0;\n2. Will they make use of them,&amp;#xA0;\n3. Do they enhance the backend.&amp;#xA0;\n\nShould the answer to these questions be a resounding &apos;no&apos;, then we need to tidy the dashboard up. Obviously we can remove all the visible items via the screen options, but these only apply on a user by user basis. If your client will be adding users, you may want to consider de-registering some, or all, of the dashboard widgets. \n\nThis probably doesn&apos;t come under the realms of &apos;best practice&apos; as we are taking away the clients choice, but for the purposes of the presentation, we will assume that the client:\n\nA. wants to be spoon-fed with only what they need.&amp;#xA0;\nB. The client wants a fairly static site, with no commenting.\nC. Has no interest in incoming links.\nD. Gets frightened by technical terminology and the word &apos;plugin&apos; scares them.\nE. The client may add new users from time to time and the layout for their dashboard must be the same\n&amp;#xA0;\n\n\n
  12. as such we will remove the following widgets:\n\n1. Incoming links\n2. Recent Comments\n3. Plugins\n4. Primary Dashboard (WordPress Blog)\n5. Secondary Dashboard (Other WordPress News)\n\nWe can do this by hooking onto the wp_dashboard_setup hook, globalising the $wp_meta_boxes array and unsetting the elements we don&apos;t want leaving us with a cleaner dashboard\n
  13. as such we will remove the following widgets:\n\n1. Incoming links\n2. Recent Comments\n3. Plugins\n4. Primary Dashboard (WordPress Blog)\n5. Secondary Dashboard (Other WordPress News)\n\nWe can do this by hooking onto the wp_dashboard_setup hook, globalising the $wp_meta_boxes array and unsetting the elements we don&apos;t want leaving us with a cleaner dashboard\n
  14. This leaves us with a completely blank dashboard, so now we need to add something there.&amp;#xA0;\n\nLets add a welcome message to ease the client into the world of the WordPress backend.&amp;#xA0;\n\nFor the welcome screen we can explain the basic pages and provide links to further explanations on the WordPress codex site.&amp;#xA0;\n\nThis is all clearly explained in the standard &apos;Help&apos; drop-down, but we can tailor our welcome screen to the exact content of the site, and to go the extra mile, we can include a contact form so they can mail any questions straight to us.&amp;#xA0;\n\nIf you&apos;re feeling particularly user friendly, you could even answer some of the mails!\n
  15. Now the dashboard is slimmed down and friendly, we can look at the menus.\n\nNearly all of the more basic sites I&apos;ve built don&apos;t make use of commenting at all, nor do they have a use for the links menu.&amp;#xA0;\n\nWe will assume the same for this site as well as deciding that the Press This app in the Tools menu is also no good to our client.&amp;#xA0;\n
  16. As such, we can hide the Comments, Links and Tools menus by hooking into the admin_menu action, accessing the menu array and unsetting them.\n
  17. As such, we can hide the Comments, Links and Tools menus by hooking into the admin_menu action, accessing the menu array and unsetting them.\n
  18. In addition to removing unwanted menus, we can also add in any that we might need that would otherwise be hidden by default. For example, the client may well want to be able to add menu items. This would not be possible using a normal editor user role, but we can work around this by adding capabilities to the editor user role.\n
  19. However, lets prevent them from editing widgets as these can be quite fiddly and easy to make a mess of.&amp;#xA0;\n\nWe can do this by adding to the admin_head hook and unsetting the correct item in the $submenu array\n\nOur dashboard is now complete, friendly, efficient and we&apos;re ready to start posting content.\n
  20. However, lets prevent them from editing widgets as these can be quite fiddly and easy to make a mess of.&amp;#xA0;\n\nWe can do this by adding to the admin_head hook and unsetting the correct item in the $submenu array\n\nOur dashboard is now complete, friendly, efficient and we&apos;re ready to start posting content.\n
  21. We an start by removing any unnecessary elements, as we did with the dashboard.\n\nFor our client, the permalink isn&apos;t going to be an issue.&amp;#xA0;\n\nThere will probably be the odd verbose title, but if they become concerned with SEO, they can give the admin login to their SEO guru and carry on as normal.&amp;#xA0;\n\n&amp;#xA0; \n
  22. To do this, we add an action to the admin_head hook and add a display: none style to any elements we want to remove.\n&amp;#xA0; \n
  23. To do this, we add an action to the admin_head hook and add a display: none style to any elements we want to remove.\n&amp;#xA0; \n
  24. I also find that Post Tags are irrelevant for a lot of smaller sites. These are normally displayed by default on the post editor, so lets remove them as we don&apos;t need them.\n&amp;#xA0;\nFor the purposes of the demo, I&apos;ve used the remove_meta_box() function to completely irradicate post tags. I would recommend against this though.&amp;#xA0;\n\nBest practice would be to set up an options page for site admins which gives them the option to over-ride this setting.&amp;#xA0;\n\nIf you were feeling particularly clever, you could let them toggle it on a user by user basis.\n\nNow the post editor page is looking tidy we can focus on the editor itself. The TinyMCE editor has been around a while, and is pretty user friendly with one exception - pasting content from Word\n&amp;#xA0; \n
  25. Yes there is a post from word button, yes there is a post as plain text button and yes there is a clean up formatting button, but no the client is not going to remember to use them. At best they will remember most of the time and hate you all of the time for adding yet another process to their day.&amp;#xA0;\n\n\n&amp;#xA0; \n
  26. Fortunately, we can resolve this by&amp;#xA0;hooking into the tiny_mce_before_init() function and adding a function of our own that forces all pasted text to be pasted as plain text. Now the client can paste from Word to their heart&apos;s desire.\n&amp;#xA0; \n
  27. Fortunately, we can resolve this by&amp;#xA0;hooking into the tiny_mce_before_init() function and adding a function of our own that forces all pasted text to be pasted as plain text. Now the client can paste from Word to their heart&apos;s desire.\n&amp;#xA0; \n
  28. To further assist the client in their posting, we can make use of the shortcode, an incredibly powerful tool. As a really basic example, consider email addresses. Yes, there is a hyperlink button in the tinyMCE editor, but the average user won&apos;t necessarily know how to utilise this to link email addresses. The addition of a simple shortcode will allow the user to wrap any email address with the relevant short code in the backend and for the address to rendered as a link in the frontend. This is a very simple example, but there are tons of other shortcodes you can write.\n
  29. Ok, so we&apos;ve built our clever shortcode, but 5 minutes after you&apos;ve demo&apos;ed the site, the client has forgetten if they need to write e or email for the email address shortcode and your clever shortcode is going to waste. To really show-off (and I have to confess I got this idea from using the Canvas framework), we can add our shortcodes to the tinyMCE toolbar. There&apos;s a page in the WordPress codex about adding buttons to the tinyMCE toolbar, and you&apos;ll need to do a bit of reading up on tinyMCE, but its a relatively straightforward process. You can reference the source code in the demo plugin as a starting point.\n
  30. So now our content area is clean, free of evil Microsoft editing and easy to add our shortcode to. However, our client needs to add some custom post meta to each post. Fortunately, the ever-flexible WordPress backend allows us to easily add our own user friendly custom post boxes. The WordPress codex gives a simple example of using the add_meta_box() function, which I&apos;ve used for the demo, but there are plenty of great tutorials out there providing far more flexible examples.\n
  31. So now our content area is clean, free of evil Microsoft editing and easy to add our shortcode to. However, our client needs to add some custom post meta to each post. Fortunately, the ever-flexible WordPress backend allows us to easily add our own user friendly custom post boxes. The WordPress codex gives a simple example of using the add_meta_box() function, which I&apos;ve used for the demo, but there are plenty of great tutorials out there providing far more flexible examples.\n
  32. One thing to consider however is that if our client decides to make use of his email shortcode in the post meta, and &amp;#xA0;wants to retain the line breaks he&apos;s added, this is what will be displayed...\n
  33. as you can see, our shortcode isn&apos;t rendering and the line breaks are gone.\n
  34. Luckily we can write a small function that adds the php nl2br function and renders the content as a shortcode (where necessary)\n
  35. and now our content is rendering correctly\n
  36. Just in case we allow our client to edit widgets in the future, or if we as admins want to use the shortcodes we&apos;ve created, its also worth adding a filter to apply the do_shortcode function to widget_text. This will allow for shortcodes to render in sidebar text widgets as well.\n\nOur content area is now clean and tidy, relatively fool-proof and word-proof!\n
  37. Just in case we allow our client to edit widgets in the future, or if we as admins want to use the shortcodes we&apos;ve created, its also worth adding a filter to apply the do_shortcode function to widget_text. This will allow for shortcodes to render in sidebar text widgets as well.\n\nOur content area is now clean and tidy, relatively fool-proof and word-proof!\n
  38. Now the dashboard and content areas are looking good, we can add a few more features to add the icing to the cake.\n\nFirstly, most companies want their contact details on display and often in sidebars and footers.&amp;#xA0;\n\nIt makes sense then to create a custom page in the backend to capture these details rather than hard-coding them into the theme.&amp;#xA0;\n
  39. With any information the site editor adds, we need to allow for error. Never assume that the information entered is correct. Obviously for things like post content, its not a problem, but for specific content like URLs, prices, sizes it will be\n\nFor example, if we are going to display a facebook button that links to the URL supplied for the facebook page, consider that the site editor may omit the http:// prefix\n\nfortunately we can run the URL through a simple function that adds the prefix in should it be needed\n\nAs a closing point, I would recommend adding these functions, hooks, filters and shortcodes to a plugin, you can go with an mu-plugin or a straight plugin, the choice is yours.&amp;#xA0;\n\nFor you as a developer it means you can simply apply your plugin to every site of this nature that you build, and for the client, it means they aren&apos;t tied to any one theme. Using our email shortcode as an example, if the user changes theme, their nicely rendered email addresses are now plain text with and e on each side.\n\n&amp;#xA0;As a further example, if you apply the wp-touch plugin to your client&apos;s site, it will render a mobile version of your site using a separate theme this will also result in shortcodes no longer rendering.\n
  40. It can be fairly tedious to spend time messing around with backend. It all works fine out of the box, WordPress have spent years developing code, so why can&apos;t the client pull their finger out and learn some new tricks. In reality, your beautifully built site will become redundant if the client can&apos;t update it easily. Worse still, they may end up ditching WordPress altogether and paying a cowboy to build a site with Frontpage that they then update once a month at exorbitant prices.&amp;#xA0;\n
  41. Some of the suggestions I have made seem pretty innoccuous, but most have made a big difference to clients I have encountered in the past. If turning the backend pink and embedding pictures of fluffy animals everywhere is going to mean a regularly updated site, then this is just as important as ensuring the site looks and works great for the site visitor.\n