Back End Instructions – official release
So, you might remember, back in August, I wrote a plugin called “Back End Instructions” and popped it on my site for you all to freely download and use, if you wanted. If you recall, the plugin is for those of you who have a lot of clients that utilize WordPress, and you’ve written a custom theme for them, but no matter how many times you send instructions or answer their questions on how to use it, they still keep asking you.
I’ve discovered that the reason clients do this is because (and no offense to clients – we live in an “instant gratification” age right now) it’s easier to just call you and ask when they forget how to do something than search for the last time they asked you and you provided that answer. You can send them written instructions or answer their questions with meaningful subject lines in email (so it’s easy to find), but they’ll still just call you when they forget instead of looking to see if the question’s already been answered. They want something that’s right there, in their face, and they don’t have to go looking for it.
So I came up with this plugin, and I tell ya, it’s been a lifesaver. It’s very unobtrusive, but there when you need it. basically, it uses the Custom Post Type functionality of WordPress to display instructions on any page you want within the administrative end of the WordPress installation. Not only can you create posts for each individual page of the site, you can customize said instructions so they only show for certain user levels – so people with “Contributor” levels won’t see the extra info that applies to Admins.
You can use written instructions, audio, video – anything you like. It’s just like writing a regular post – the only difference is it shows up in the back end of the site.
I’m getting ready to plop this into the WordPress Plugin Repository for people to download and utilize, but I figured I’d go ahead and write a little sumthin’ sumthin’ here on my site about it, so that’s in place when people have any questions.
Now, please note, this is the most intensive plugin I’ve ever written, and I’m not 100% sure how the whole “upgrade notification” thing works. I dont’ know if the WordPress system just suddenly tells you that a new version is available for download, or if I have to put in special code for that to happen. I’ve never quite found a 100% assurance on the issue, so I’ve given up and I’m just going to try it and see.
Back End Instructions
Tested in WordPress 3.0.x – 3.1.2
initial indications show that it also works in MU mode – but this isn’t fully tested.
if you downloaded the plugin back in August and have been using it, then I will ask you now: please download this new version, an you might have to FTP into your system and see if you have 2 copies. I’ve renamed the folders and such so many times since my last iteration that it’s probably best if you just delete the old plugin files, and grab these new copies and put them in. (Don’t worry, your already-existing instructions won’t be touched – they’ll still be there.)
There’s an extensive readme file in the download that will most likely answer any questions you might have – so I’m not going to copy the whole thing here. Instead, I’ll give you the highlights and some basic instructions, and let you run off with the readme file for the more in-depth stuff.
So, after you’ve installed and activated the plugin, you’ll see a new menu item show up to the left side, called “Instructions”. When you go there, there’ll actually already be a new post, and when you look to the top, there’s a new little tab on the page that says “View Instructions for this page”. Click it, and you’ll see this quick little video:
That gives you a quick run-down of how it all works. But what I didn’t mention in the video (sorry, it took me something like 15 tries to get that one done. I’m not doing it again LOL) was that if you’re not using self-hosted, YouTube or Vimeo for the instructions, you can just use the regular post content area and pop the videos in there. For example, if you go to WordPress.tv and find a video you’d like to have your client see, you can just click the “Share” link (in the upper left-hand corner) choose the HTML code” and paste it into the content area. As long as the “Video URL” field is blank, it won’t overwrite what’s in the regular content area, and you can still see the video. Just be sure you’re in HTML-writing format, because if you’re in “Visual” it’ll strip the code and it won’t work properly.
Please, if you have any questions, or have some idea on how I can improve this, pass it along. I really want this to be useful for people
Enjoy!
Adding in changelog info. I never thought to do this before, so I’m just gonna start with the one I just uploaded – version 0.8.
0.8 I’ve fixed the issue where you can’t make the instruction show up on a specific page. Now you can make it show up on a “general” page or a specific one. For instance, if you want the instruction to show up on ALL “add new post” pages, you just pop in “post-new.php”, and the instruction will appear on any of them. But if you want a specific page, then look in your url and add everything after the last “/”.
I’ve had many requests to make the stylesheet easier to control, and not make upgrading overwrite your changes without saving. Now you can. Just create a file (“bei_style.css”) and pop it into your theme directory, at the same level as the style.css file. You can style as you wish without worrying about things getting overwritten.
Now you don’t need an additional plugin to his the menu item from lower levels. Administrators and Editors will be able to see the menu item in the sidebar, but lower levels will not. (If you’d like it to be Admins only, easy fix – but remember, upgrades will change any edits you make): in bei_post_type.php, line 13, change if(current_user_can('edit_others_posts')) to any of the admin capabilities here (for example, if(current_user_can('update_core')) will swap it to Admins only).
For future releases, I’m considering creating an administrative settings page that allows you to set your stylesheet and choose what the lowest level is to view the menu, but for now I’m not sure that’s really all that important. I’m also working on a version that stops relying on Jing, and uses HTML5 Video instead – then you have more options to play your videos instead of being stuck with Vimeo, YouTube or SWF files.

Comments
Impressively well-done: your plugin, you instructions, and your video. Something this good doesn’t show-up very often.
February 14, 2011 at 10:35 amHi, this was just what I was looking for. A way to give my clients video instructions so they can do some of the editing themselves. Awesome.
If I may suggest, I’d like to make the actual left-hand “Instruction” area invisible to people below a certain level, I’d rather no one below Admin see it, because it may confuse them if they start looking at it.
Before I watched your video tutorial I poked around it and I couldn’t understand why I couldn’t watch the videos. I fear my VERY laymen users will get frustrated.
Also, the “View instructions for this page.” is great, but I’d like to see it bigger and more noticeable, I know I could just tweak it with the CSS, but I’m lazy! LOL Maybe in future editions. That’s incredibly minor, I just want to install this on all future client sites and streamline it.
Thanks so much for the work you’ve done on this! I can tell this is going to be a huge asset to me!
February 14, 2011 at 11:41 am>>If I may suggest, I’d like to make the actual left-hand “Instruction” area invisible to people below a certain level, I’d rather no one below Admin see it, < <
I've addressed this in the readme.txt file.
>> I poked around it and I couldn’t understand why I couldn’t watch the videos.<<
Can you clarify what this means? I’m not quite sure I understand what you’re saying here.
February 14, 2011 at 12:26 pmGreat idea for a plugin and one that I will definitely use. Will make it so much easier to provide help for clients.
I assume you worked out all the SVN stuff for the repository? I found it very confusing at first but there is a useful thread at http://wordpress.org/support/t.....ndor-trunk if it helps.
February 15, 2011 at 4:18 pmShelly, thanks for this fantastic plugin – I’m really excited about the possibilities, and it’s come at just the right time for a project I’m working on.
One thing is bothering me though -am I correct in thinking you can only allocate an instruction to a single page? I have some general instructions for editing pages which I’d like to have available any time the person is in the page editing screen – but this doesn’t seem to be possible, it seems you can only allocate instructions for editing a particular page – is that correct?
February 19, 2011 at 2:25 am Show/Hide RepliesYep – you’re right. it’s for one single page only. I’ve already attempted to make it available for an entire section of pages, but have been unsuccessful in that venture at this point. it’s actually something I’m working on for the next release.
I figured it was actually okay to do this, since each administration page has it’s own buttons and functionality, and I’ve always been told breaking videos up into no more than 5-minute segments was a good idea (otherwise you lose your audience) – and the way it is now, you can get really specific (and into detail) on each specific page.
But yeah, it would be good to have “overall” stuff too. Just haven’t gotten it working yet.
February 19, 2011 at 12:48 pmThanks Shelly, looking forward to the next release, hope you can get that working! I’ll work around for this project.
Thanks again for the great plugin!
February 20, 2011 at 12:31 amJust wanted to say thanks again Shelly. Extremely useful and very well done.
March 7, 2011 at 12:48 pmLike Deirdre, I also have a problem with being lazy. I was wondering if you would please set up your plugin for me on my site and write all of the instructions for all of the different areas. That would be really helpful! (J/K) ; p
I hope Deirdre isn’t offended. Just had to poke a little fun.
It’s so awesome of you to make this available. I wish you great success in your work!
Sorry, one more follow up comment.
I’m not sure what Megan is talking about. I just tested the plugin on the general pages area and also an individual page and it worked just fine in both cases.
I was confused because you (Shelly) agreed that it was something that wasn’t working.
March 7, 2011 at 12:59 pmHi Mike,
what Megan is referring to is the fact that in the right-hand side, where you put in the page names you want the instructions to appear, you can only make the instructions show up on that *specific* page. What Megan is looking for is to have a list of pages you could apply a particular instruction to. So if you have a video that would work well in *both* options.php and post.php, then you could put both of those pages down, instead of creating the same instruction twice and making it appear on both pages.
Make sense?
I do believe, in most cases (I’d have to look again to verify) if you’re in a *section* of something where the page ends with “?something” then it’ll work on the subset.
As an example, I have a calendar plugin, and when I’m in the admin area for this particular plugin, the URL looks like so:
http://localhost/wp-admin/admin.php?page=calendar
So if I place an instruction in the “admin.php” area, it’ll show up on *any* “admin.php” area. If I put in “admin.php?page=calendar” then it’ll show up on ALL calendar admin pages.
However, you’ll see that writing apost and editing a post are two different filenames (post-new.php and edit.php respectively). So if you write an instruction and pop it into “post-new” it’ll only show up on the ” Add a post” section, but not the “edit” one.
Of course, I’m writing all of this from memory, and I think some of these issues I addressed in my latest release, but not all of them. I’ve written so many iterations of it up to this point that I can’t say 100% what’s fixed or not yet, since I’m currently slogging with clients at the moment. But anyway, hope that gives a little more clarification – and in the next release, I plan to fix these kinds of things so they’re easier to use.
March 7, 2011 at 1:18 pmOK, I have just upgraded to the new version, and now it seems to be doing the opposite! Now if I put instructions against a particular page, it shows up against all pages.
So I have instructions on Writing and Editing Pages, which obviously I want the client to see when they are editing any page. Check! I see it against any page now, great work, fantastic!
But I also have some special instructions for the home page, and for the contact page. But now I see those instructions when I’m on other pages too!
I think what I want it to be doing is if I put in “post.php?” – it shows on any page, but if I put for example, “post.php?post=113&action=edit” – it only shows on the specified page. Is that possible? At the moment both of the above make the instructions show up for any page I am editing.
March 28, 2011 at 7:07 pm Show/Hide RepliesInteresting. Actually, I’ve never attempted to put it to a specific post – I honestly don’t know if it would work. In theory it might, but I don’t think it will, because my comparison string is against $pagenow – which just returns the *type* pf page you’re on, not the exact one. (Hehe, now I’m getting into code-speak – I don’t think anyone wants me to go there!
) But I the reason I did it the way I did was to have typical instructions for each section, and if you had “individual” needs, you could just place it in the list of instructions to look at. However, I can see how it might be helpful to be able to specify individual Pages for special instructions.
I’ll see if I can’t work something up on this, but it may be a while – I’m pretty swamped with work at the moment. In the meantime, you can use a workaround of just creating the instructions for the individual posts, and just adding them to the list that appears for the “general” section. (That way, if I can get the other method to work, you should only have to change the page name you want it to appear on.)
March 29, 2011 at 6:32 amHuh? OK, now I’m confused, as I thought that is what it WAS doing the first time around – only linking the instructions to a particular page, not all of them. Maybe I’m just going mad…
Anyway, I know you’re busy, Shelly. It’s a great plugin already and gives me plenty to work with just as it is. Thanks again for creating this!
March 29, 2011 at 10:36 pmHey Shelly,
there’s a bug in your conditional logic that will output the header code only if the class variable equals “activate” in the last of the iterations. This occurs because you declare $class = ” inside the foreach loop around line 65, right above the check the postpage/wherepage check. I moved the declaration before the outer foreach statement, and it works perfectly.
May 16, 2011 at 2:36 pm Show/Hide RepliesThanks for the plugin!
Thanks Tobias, I appreciate the feedback! I’ll get this out in the next release
May 17, 2011 at 8:23 amNice plugin Shelly … Very useful !
May 21, 2011 at 6:00 pm Show/Hide RepliesQuick question though … Is there a way of using shortcodes or “plugin action tags” in backend instructions posts ?
For example i tried to use “Text expander”, a plugin which is, basically, using his specific tags to hide a text and expand it when a link is clicked. But it doesn’t work in Backend Instructions post … Tried another one similar … same result … Any idea ?
Well, considering that this plugin already *does* that action, it’s kind of redundant to use an alternative plugin to do the same thing. I’m not quite sure why you’d want to do it in the instructions here anyway, since it’s already set to expand the text on demand. Further expansion, I think, would lead to confusion. I’m gathering that what you want it to have a post with (perhaps) bullet points that expand further? I dont’ know what this would accomplish, since the idea is already that each post would act as a “bullet point” that expands on demand. Yes, instead of a list item, it’s a separate post, but I believe that’s preferable to re-creating a post and making it show depending on the end-users login level. This way, you can re-use items and have them show/hide dependent on what the login level is, with no need ro recreate sections.
If there’s another reason (that I’m not aware of) that you’d like to show/hide certain text sections, I’d consider doing something with the plugin to allow it, but the purpose of it being set up the way it is now is to make it simple, and quick, with a single glance to the list. Hiding lists within lists would make it more complicated for the client to find what it is they need, and more complicated for you (the programmer/designer) to do up your content for them. So unless there’sa REALLY good reason for doing that, I don’t think I’ll change it. (But if there is a really good reason for doing it, then I will put in in a future release.)
May 22, 2011 at 11:09 amIt seems i haven’t so complicated things in mind …
I will try to detail my thoughts, but my english is not so fluent. So, accept my apologies for the possible “language black holes”
As i understand it, the real benefit of backend instructions is to propose a contextual help. It’s very important, in my opinion, that the user stays on the very page (browser tab) he needs help with.
On some pages, for “difficult” users”, i need a very detailed, step by step, procedure. This kind of help can be quite long. And i never know what part of an action my users will remember or about which part they will need a very detailed help with … …
So having a way to collapse paragraphes, in a backend tab (yes, collapsable itself, I noticed …
, would be very useful.
I don’t really understand what would be the confusion with clicking on another nested text. It would be clearly “inside” the backend tab. And, of course, a click on another “read more about this action” would close the previous expanded text (usual behaviour of this kind of function).
So, the key points, in my opinion, are :
- You can have several actions to “help with” in an admin page. The text can be quite long and the vertical navigation/reading in the page rather difficult for people who are not “computer friendly”.
- These people are very confused by help on different pages or posts because they don’t deal so acurately with new tabs/windows in browsers. You have to keep them on the same browser tab …
And yes, i’m seeking for the perfect contextual help for a particular type of users (Part of them are “complete beginners”).
But, i also remember how i’m now frustated when, not having my usual two screens workspace, i have to deal with texts opened in another tab than my current “action tab”.
But, i repeat, BEI is a great step to a really useful contextual help in wordpress. Keep the good work. No donation link ? That is or will be a shame …
May 24, 2011 at 9:19 pm Show/Hide RepliesI understand the desire to have collapsable points, but I think that is defeating the purpose here. The reason it’s set up to have each point as a different post is to make it easier and less confusing for the person that needs the information, and for you. If you write a long instruction with different bullet points then it *will* eventually lead to more work for you, and confusion for the person that needs it. Why? Because each instruction you create is visible to every user level on the site. If you set an instruction to be visible to an author, then you will write the instruction for the Author level. But the administrators and Editors will also see this information. But the Editor and Admin levels have different options open to them that other levels don’t have – so you’ll have to write another post to cover the points for those levels. (If you completely rewrite the instructions for them, then you’re creating more work for yourself, *and* they will be confused because they’ll see the info not only meant just for them, but also the lower levels – so there will be redundancy.)
This is why I recommend that you write ALL of your instructions for Subscriber level status. That way, you can”build” upon the library of information as you write for each level. There will be no redundancy, no confusion for information (lower levels looking for information that isn’t there at their level) AND the end user won’t have to guess what parent section they need to look under to find the information they need. They can find it at a glance through the list.
I hope I’m making sense
>> don’t really understand what would be the confusion with clicking on another nested text.< <
Because, as someone who is *completely* clueless, they will have absolutely no idea of which item to look under. If you have a list of items to look through, then they won't know which section they need to view to find the info they need - and if the info is further hidden within an expanding section, they will be easily lost.
Now, I understand that you might just only want to create *one* post for the end user, and have information expand that way, but see above. if you do that, you're just creating more work for yourself, and they system is set up to already have this done. Instead of having *one* post, you have each point as an individual, reusable post, and the information the end user wants can be seen with a simple glance at the list.
>>- These people are very confused by help on different pages or posts because they don’t deal so acurately with new tabs/windows in browsers. You have to keep them on the same browser tab …<<
I don’t know what you mean here. The plugin *does not* open a new window or tab. When you write an instruction, a small tab appears at the top of the screen (like the “Screen Options” tab). You click it, and it expands to show the list of items. You click the list of items, and each item will expand to show the instruction. Nothing opens in a new window or tab. If yours is, then I would imagine there’s either a conflict with something (another plugin, or a function in your theme), or your browser settings are set to do this. The instruction is designed to fold open/close on the exact page it is supposed to be on – there is *absolutely nothing* in the plugin that tells the links to open in a new window or tab on click.
May 25, 2011 at 8:06 amOk, Shelly, i’m sorry. I was obviously missing the crucial feature of the plugin.
I didn’t noticed that i could have several collapsable backend instructions for the same admin page … I was just describing the way the plugin actually works …
And that’s perfect … Thanks for your patient explanations
Just for the record, i know that backend instructions doesn’t open _blank targeted links. I just tried to explain that if the instructions text was too long, i felt the need to link to a developped external explanation page or post. Because I missed the “multiple collapsable elements on one page” feature. No conflict with anything for Backend Instructions…
What happened ? I read the features section quickly enough. I thought the plugin feature was very clear : one collapsable contextual help tab on every admin page i want … And once in the plugin UI i didn’t realize i could have several instructons for one page … The “redundant” link in the instruction tab was strange enough though … I am not proud …
But … Perhaps something in the plugin UI for slow people like me, shouting for “several collapsable instructions for every admin page”. I am aware that all was in your features text … But I know at least one person who didn’t see the feature either. And yes, I was the one who pointed her to the plugin and she didn’t read the plugin instructions, because i had been so efficient with my explanations …
Thanks for all.
May 25, 2011 at 4:52 pm Show/Hide RepliesWell, I’ll tell you what: I made a mistake in my 0.7 release. I put a variable in the wrong spot, and it made it so you could only put in one instruction per page. Someone pointed it out last week (I think) and I uploaded a fixed version (0.8) over the weekend. So we’ll just blame it on that
May 25, 2011 at 5:00 pmGreat and useful plugin!
One issue is that when opening the editor with an instruction attached, for instance a new page, the instructions are visible when the page loads, then they are hidden. Is there anyway to not have this “flash” of instructions as the page loads?
June 7, 2011 at 12:13 am Show/Hide RepliesActually, yes there is. (I noticed that too!) I’m working on the next release and that’s in my “to do’s” for it
June 7, 2011 at 7:41 amHi,
it is a real great Plugin. I have only one problem/question: The Instructions shall be visible only to Backend-Users. Unfortunately with there Permalink they are reachable in the Frontend as well.
July 7, 2011 at 11:07 am Show/Hide RepliesI tried to set it to private or password protected but then they won’t show up in the Backend anymore. Is there any way to solve that or am I just blind?!?
Well, they are using the WordPress custom post type. Custom Post Types are generally made to be used on the front-end of the site. So generally, if someone has the URL to the page, it would be visible on the front end. But if you don’t link to them from anywhere on the site, they should not be found – save from someone actually knowing exactly where they are located.
Someone already reported to be that they are coming up in the search results. I’ve fixed that issue (it’s in the upcoming release) – so once you upgrade there shoudn’t be anyone actually viewing them from the front end (not unless you provide direct links to them) I dont’ know that there’s any method of preventing them from actually being seen on the front end (whether you know what the URL is or not) – because, as I said before, these are using the custom post type system that WordPress provides. I don’t know that there’s any method of removing permalinks from posts. But I’ll look into it.
July 7, 2011 at 11:30 amThank you!
July 7, 2011 at 3:41 pm Show/Hide RepliesYes, it appears I’m correct. it’s *possible* to remove the permalink slug from the instructions post, but the difficulty of doing it (and the possible collisions and dangers that could affect the rest of the site) it’s simply not worth trying to do. Doing so would basically use the custom post type for something it’s not supposed to be used for.
An alternative method would be to simply force any user who accidentally happen upon an instruction on the front end to be logged in. Actually there’s several things you could do. if you dont’ want them to be seen *at all* on the front end, you can create a custom post type template file and make the custom post type do whatever you like. Force people to log in to see it first (and compare the logged-in user’s level to the level given in the custom post type) ir simple have a default message that says “you can’t see this” or something. (maybe make it a fake 404 page.)
Those are some viable workarounds
July 7, 2011 at 3:50 pm