1. Hi Rob,
    This task is done from my end.
    Please check it and let me know the status of the task.
    Thank you.

        1. looked great to me thankyou – client has yet to give me feedback. hopefully will have more work for you next week – just need the time myself to write it up:-)

  2. Nice one with the screenshot;) Hm so I think you’re saying most efficient time/cost implementation of infinite file uploads is sub-optimal db representation – however if user removes item 4 it can be empty and therefore we simply don’t show empty items on front end – can we do same on back-end? ie once item 4 is deleted just not display it on either back or front end? Or are we stuck with an empty slot on back-end that doesn’t display on front-end until we fill it? If that’s a major time/money saver then maybe that’s ok. If we don’t have to display deleted slots anymore then maybe we just don’t number them – so no-one would ever know slot 4 was deleted?

    I will ask Tom if he wants to give each cpd a text name to show underneath. They can be arbitrarily named unlike dbs which are always the same…

    Re icons – i checked on the live site and could find pdfs, jpgs and pngs but no docs. How about a default icon for pdf/doc/docx and then thumbnail for png/jpeg? Yeah I guess we change the text to ‘DBS pt 1’ etc beneath each icon?

    1. Ok I am working on alternative solution now based on your suggestion. I will have to assign a different meta value for storing these file Ids so they can be added and removed in an array set.
      This may take some additional time as it will be using new logic.
      Please see attached new screenshot of design which you can show to Tom.

      Also, can you tell me if these dbs data is used anywhere else on site apart from instructor profile? I might have to change changes for other functions also.

      1. Thanks I think this is much better – understood re time… Also, each one will need a text field and a date picker ‘Description’ and ‘Date’ – to display on front end under icon eg. 13/10/2023: ARNI ASSESSMENT or 07/04/2023: ARNI/UCL MEETING – he’ll also wants a carousel on the front end – nothing animated or anything but to display the first 3 or 4 (whatever fits best) then an arrow to load next 3 or 4 – then a back arrow – maybe give me a revised total estimate is a good idea. I’m sure he’ll do it whatever but I’m thinking it’s more than initial guesstimate was…

        Can it be done by christmas? 😉 Hopefully not too much else on the board for you if mpyke are a bit quieter – I’ve got ANKpodcast and Shubham/me can do other SS tasks… Then hopefully come January we’ll be in a position to get him talking about template sites again…

        1. I am working on these changes now.
          The new title and date fields will also require updating database rows for each file and changing the instructor layout design.
          It will take approx 11-12 hours total for this task now.

  3. I investigated the code for this and basically it is possible to create infinite fields for uploading files
    However the way data is stored in backend it is wp_usermeta with specific position id to store the uploaded file id

    I can add a remove file button to empty the file field and set metadata empty however it will not be possible to shift position of other fields.
    For example if the instructor adds files for 4,5, and 6 fields in backend, then decide to remove 4 then we can only set it as empty and not move 5 to 4 and 6 to 5
    On the frontend however I can still show proper order of files.

    Secondly for thumbnails, can you tell me the different format of files which are uploaded. Are they mostly doc files or can there be pdf and jpg/png images? Any other format?
    i might have to include separate icons for doc/pdf files.
    Also do you want to keep following text for uploaded files on frontend ?

  4. Hiya – please can you put a check on each row to see if it has the wordpress option ‘make this post sticky’ checked – and if it does stick that nice pinned icon next to it? So basically if we check this option then wordpress automatically puts it at the top of the feed – but the modification I’m asking for would add your icon to it. Maybe put it on the left so it looks obvious… THanks!

  5. @Ash I have fixed the Billing Clinic Address error on checkout field. The form is submitting now. Please test and let me know if there are any other issues.

    @rob I have taken backup of live so you can deploy this ticket and booking form changes to live once they are approved because these tasks required updates on many files.
    After that if there are any css fixes needed then I will manually add them.

      1. Hi Rob. These event changes are ready to go live. Can you also please put the booking form changes for this task live at the same time (not sure how to tag you in it):

        When you do it can you also please copy this page over to the live site because it’s linked to on the updated booking form:

        Might want to do a cheque order or something afterwards to check it’s working. Thanks!

        1. ok – will try to fit this in monday afternoon – if not then tuesday afternoon. looks to me like deploying the code will deploy both tasks so i’ll just copy over the page and give the shop a quick 1pound donation:)

          I’m set as a moderator on these tasks so i get notifications same as you. We’re not sophisicated enough for tagging around here:-)

          1. Thanks Rob. It’s just occurred to me that I asked Karan to make some changes on the live site (the ones numbered 1-6 in comments below). Will those get overwritten if you copy the code from the dev site?

            Sorry if that makes things more complicated but need to keep those changes and they haven’t been done on the dev site.

          2. haha… it happens… I got to this earlier today than expected so had just finished deploying/checking when I read that. I think I’ve fixed it though pls double check for me. Basically I’ve deployed all code from live site and re-applied single_event.php, single_product.php and assets/css/style.css to both live and staging. It looked to me from the modification dates like they were the ones Karan modified on live site. I’ve also imported the terms page and checked a purchase. I think we’re good now… Ash please give it the once over though as you’re more familiar with these changes.

            Karan, there’s a .git folder now on live and staging. Again, like ss dev site there’s a .git/config that defines the remote. I don’t know how you interact with git (cli like me? hopefully…:-) but I’m thinking a good workflow for direct live css would be (on live) git add . ; git commit -m ‘something’ ; git push origin master . Then on staging git stash ; git pull origin master ; git stash apply Your thoughts?

          3. Hi Rob, I won’t pretend I understand much of what you said but it seems some things didn’t get transferred to the live site.

            1. Start Time and End Time fields in events aren’t there on live, it’s still the old single ‘Time’ field instead.
            2. Booking form on live isn’t the same as the new dev site version. For example the ‘Professional Registration Number’ field is required on live but not required on dev, and field labels for ‘Participant Information’ section haven’t been updated on live (they still say delegate instead of participant).
            3. ‘Booking terms and conditions’ link on live booking form goes to page on dev site. Need it to open

            Also the ‘Clinic Address’ field has disappeared on the dev site booking form. I’m sure it was there when I checked it the other day so not sure what’s happened there.

            The changes I mentioned that Karan made to the live site are still there though so that worked fine. Also the product updates worked because the Start Time and End Time fields are there and the shortcodes for them worked in the booking confirmation email I received when making an order.

            UPDATE: Just noticed another problem, don’t know if it’s related to today’s updates. ‘On demand’ events aren’t showing events of the same type in the ‘Other options available’ section at the bottom of the event pages, such as – it’s showing events of type ‘Webinar’ instead. I checked the settings at and it looks like it’s set up correctly so I don’t know why it isn’t working correctly? It’s working as it should for event types ‘SRH’ and ‘Webinar’.

          4. Karan I think we need your help here – I can see the code for the Event field group includes ‘start time’ and ‘end time’ on live same as on staging. But I can also see as Ash says if you go to the dashboard we only have ‘time’. Do we need to do a dashboard import/export on the acf groups? (seems a bit weird though as they are there in the code…) I’m guessing probably any other issues are related to this – I checksummed the code – I really did deploy it right this time (unlike last week on Tom’s site;)

    1. Thanks Karan, the [start_time] and [end_time] shortcodes are working fine in the automatic emails. Found a couple of issues with the booking form so I’ll report those on the other task.

      1. Hey Rob/ Ash… sorry i didn’t take into consideration booking task during deployment. There were couple of updates needed on dahboard.
        I have added them now. Also updated the style on both sites.

        Can you please test now and let me know if you have any other issues?

        1. Thanks Karan. Booking form looks fine now. Please can you help with the following:
          1. Start Time and End Time event fields are in a different format on live than they are on staging. Please can you change the fields on the live site to behave the same as the fields on the staging site? On staging they are text fields which then display in event boxes in the format ‘9.30am – 4.30pm’.
          2. Please can you change the ‘Booking terms and conditions’ link on the live booking form to – it’s currently linking to the page on the staging site.
          3. On the live site, ‘On demand’ events aren’t showing events of the same type in the ‘Other options available’ section at the bottom of the event pages, such as – it’s showing events of type ‘Webinar’ instead. I checked the settings at and it looks like it’s set up correctly so I don’t know why it isn’t working correctly? It’s working as it should for event types ‘SRH’ and ‘Webinar’.

        2. thanks Karan, we’ll get better at this tag-team thing… I’m guessing you didn’t touch the git repo? I supposed I can just commit the live, stash the staging untracked files and pull repo to staging at this point right?

          1. Hi Rob, yes I didn’t touch the git repo. You can update the changes for live on staging now.

    1. Thanks Karan. Found two issues:
      1. It’s possible to successfully make an order without ticking the ‘I agree to the booking terms and conditions’ box. Please can you set it so this must be ticked before an order can be placed, with a validation message ‘You must agree to the booking terms and conditions’ and highlight the field on the form if it’s not ticked when the form is submitted.
      2. I selected the ‘Other please specify’ option for the ‘How did you hear about the course?’ field, but the text I entered in the box didn’t show on the order. Instead it says ‘Other please specify’.
      Also a couple of minor changes while you’re doing this:
      3. Please change the linked text to include the word ‘booking’ as well, so the link is ‘booking terms and conditions’ instead of just ‘terms and conditions’.
      4. If possible please set the ‘booking terms and conditions’ link to open in a new tab.


        1. Hi Karan, the client has come back with one field label change for the booking form:

          1. Please change ‘Yes! Sign me up to receive emails about future training courses. (optional)’ to ‘I would like to receive emails about future training courses’

          Can do it on live site but maybe it’s better to change it on staging as well at the same time so we don’t have different versions on each site? Whatever you think is best. Thanks!

          1. I have updated this now on both staging and live:
            1. Please change ‘Yes! Sign me up to receive emails about future training courses. (optional)’ to ‘I would like to receive emails about future training courses’

      1. I made a couple of tiny changes then put it live – thankyou, great job! I’ll get on to answering your question on the other task by the weekend ifI can… Also, an apology – the problem with the ‘/users’ page breaking was nothing to do with your export code. Client deleted a bunch of users and I exported them to file ‘users.sql’ and it broke the theme router!

  6. Hi Shubham – checked and deployed! However I had to do some fixes. The theme including your changes on the other ‘export’ task is now in stroke-solutions-bu folder in themes folder. Something was breaking the /users page so I moved the news tab changes to theme backup. In the process I: 1) moved tab-news.php to partials/shared/ 2) fixed a aria-controls= descriptor

    I noticed that now all the default tabs work correctly, so thankfully we don’t need the change to the footer.php. On other projects we cut corners/add quick fix hacks a lot (me especially…)but no this one we cannot afford to as it is so complicated.

    Anyway I’ll mark this one ‘done’ and we’ll fcus on the next task…

    1. Hi Rob,
      Hope you’re doing well.
      Is there any fault in my code?
      Please let me know it so that i can start improving it.
      And also thank you for your info.

      1. Hi don’t worry about it – this site is extremely complicated. Between us we’re replacing Karan while he works on something else and it was never going to be easy! He is extremely skilled and has been working on this site for a year… Anyway, in this case – the default loading tabs needed to work without you adding a js fix in the footer:-) I think maybe one of the css attributes was wrong – I corrected a couple – ‘aria-controls’ and also I think I added a ‘fade’ attrbute… or maybe it was one of the other code changes you made for the other ‘exports’ task that broke it. I’ll try to get back to you on your questino in the ther task this week and we’ll have another go!

  7. Hi Ash,

    Sorry for delay, my laptop had broken so I needed to send for repair.

    I have added the start_time and end_time fields for products which will then show in course emails when using these shortcodes [start_time], [end_time]
    I have also updated event time fields.
    Please try testing and let me now if you find any issues.

    @Rob just for info most of the updates have been done in code so you might need to take backup when syncing staging with live so that changes are not overwritten.

    1. hiya -so…. if I want to put these latest changes live are you saying I need to merge them with some changes you’ve also made on live? I’m thinking to get git working on this project soon… That said, maybe you can do live deployment for now? 🙂

    2. Thanks Karan.

      Time fields for events working fine.

      I can set times for products but I can’t test the [start_time] and [end_time] shortcodes in emails at the moment because I can’t submit an order. When I fill out the booking form and try to submit it I get the error ‘Billing Clinic Address is a required field.’ even though I’ve entered text in the Clinic Address field. Looks like you’ve done some of the requested changes to the form already so you’re probably still working on it, but please let me know when it’s working again though so I can check the time shortcodes. Thanks!

  8. Hi Rob,
    I have made the recent changes on dev server, Please check.
    And also about your query
    if I were to deploy just the template file changes you made to live site, would it work? In other words, did you make any changes in the wp dashboard that would also need to be duplicated?
    Yes just upload the template files for the frontend and also add this file to the particular folder in live site(This folder is basically for the backend file to show the news data):
    And i didn’t change anything in the dashboard.

    1. Instructor profiles now correctly show a default tab – but patients and subscribers still do not. Please can you fix this. Patient should show ‘appointments’ and subscribers should show ‘videos’.

      Thanks for the info re php files!

      1. Hi Shubham – do you know when you’ll get a chance to look at this? > Instructor profiles now correctly show a default tab – but patients and subscribers still do not. Please can you fix this. Patient should show ‘appointments’ and subscribers should show ‘videos’.

  9. Hi Shubham, by ‘pinned post’ client meant the facility of wordpress where checking ‘make this sticky’ in screenshot attached the post goes to top of list. This seems to work fine with your news page so please remove your pinned function. Please keep a copy of thecode thoughas I havean idea for it later on another feature…

    1. Hi Rob,
      Thanks for the clarification, So should i change the existing code to show the sticky posts at the top of the posts list?
      And for the pinned posts functionality i have given the option to user who can pinned the posts according their needs(and it is differentiated by their Id’s), I think i misunderstood that.

      Please tell me if i need to do the sticky part or just remove the pinned post code for now?

      1. It already shows sticky posts at the top of the post list I just tried it. Yes please remove your pinned post functionality but keep a copy of the code as we may be able to use it somewhere else.

          1. Hi Shubham,

            Almost there:-) When I view the default tab ‘appointments’ appears but when I view on staging site it no longer loads a default tab. Please check also default tab for instructors/subscriber role users.

            Also – if I were to deploy just the template file changes you made to live site, would it work? In other words, did you make any changes in the wp dashboard that would also need to be duplicated?


  10. Hi rob,
    I have some queries for the above task.
    1. In the present functionality there are two amount field in the excel sheet named “onl:amount and in:amount”;
    –So should i sum the two fields and show the total amount in a extra field or something else?
    2. Same thing for KICKBACK field.
    3. and for the rest, i have done some R&D on the functionality, It is slightly working but need to differentiate b/w appliaction page1,page2 ,page3, same for the rest.

    the overall task will take 4-5 hours to complete.

    Please approve the time and answer the queries.

    1. Hiya – apologies it took me so long answering this.
      1. ‘onl’ means online, ‘in’ means in person (ie instructors doing lessons over zoom vs doing lessons face). So yes please sum them. 1. is onl:amount + in:amount and 2. is onl: ss kickback + in: ss kickback
      3. great.

      Yeah time/money is what it is. Client just got a huge grant in september so he’s keen to get things done and not too bothered re cost. He’ll be a lot less generous when it’s running out next summer! That said, if you and I replacing Karan means higher costs initally I may have to discount him somewhat. We’re doing ok so far!

      1. Hi Rob,
        Thank you for clarify my queries, I will start the work from tomorrow.
        and I am bit confuse about this point of yours:- He’ll be a lot less generous when it’s running out next summer! That said, if you and I replacing Karan means higher costs initially I may have to discount him somewhat. We’re doing ok so far!

        1. thankyou -sorry re my unclear statement. I have to ‘chat’ when I talk to clients so it is a habit… But having tried to learn a second language myself I should keep my task messages simple (After many years living in Italy I still struggle to work in the language!).

          All I meant was we are not tight on budget right now and the time estimate you provided is totally fine – client is focussed on getting tasks done right now.

          But that will probably change in a few months time when he has spent a lot of his money! It happens every year… He’s an amazing guy but not the greatest at managing budgets…

    2. also please remember your modified theme files for this task are in wp-content/themes/strokesolutions-bu because I was debugging… Please feel free to modify the theme again now. Lastly, also please keep your hours well up to date wednesday/thursday/friday as I have to send clients invoices. Thanks!

  11. Thanks Karan. 1-6 look fine to me so I’ll let them know.

    For 7 and 8, they aren’t using timings on product programmes anymore so we need to pull the data for [start_time] and [end_time] shortcodes from somewhere else. We already need that information to show on the event boxes so I was hoping it could be taken from the event fields when they’re set up. Course types are set per product and then products are assigned to an event so don’t know how complicated that would be. If it’s a problem then the [start_time] and [end_time] could be set for products instead but it would need new fields for them (best next to the date field at the top), as well as the new fields for events because the times still need to show in the event boxes as well.

    1. Ok in that case, we will need to put separate time fields for products because autoresponder emails use course types and product order information.

      To make things easier, 1 update i can do is if event time fields are added and primary product is set then the primary product can automatically take event time data for its fields after first save.

      Let me know if this seems like a possible solution.

      1. It’ll be fine to just add the time fields to both products and events so I can set them separately. If the time fields for products can be next to or below the Course Date field at the top then it’ll be easy to remember to set them. They should be unrequired fields because not all courses have start and end times. Thanks.

  12. Regarding these 2 tasks:
    7. Please change ‘Time’ field for events to ‘Start Time’ and add another ‘End Time’ field. The event boxes for event types ‘SRH’ and ‘Webinar’ should then display the information from those two fields in the format ‘9.30am – 4.30pm’.
    8. After the above is done please update the [start_time] and [end_time] shortcodes for the automatic emails (which are set up under ‘Course Types’) to insert the times from those fields.

    I checked the code and currently start_time and end_time shortcodes for automatic emails are generated from itinerary section in products
    Do you instead want to generate it based on event template start time and end time?
    Events are associated with products based on conference type custom field. Can you confirm this also?

    1. >Events associated with products
      Hmm no I don’t think so. I think each ‘Event’ has a ‘Primary Product’. (we don’t care about the secondary/tertiary anymore – deprecated!) The field you screenshotted/highlighted shows how events are related to ‘Course Type’. So if some-one goes to an event page they buy a product but then the course-type determines all the email responders…

      Hoping Ash has a handle on the rest;-)

  13. The blog posts have been assigned blog or podcast category in backend. The category archive template was missing so I have added it now.

    I have received the paypal payment from frank

  14. Hi @Ash, good to see your comment on FOS!

    @rob I will take on Mpyke tasks for now since I wrote the code for this site and I am aware of the different conditional logic.

    I have updated these changes on live, please check:
    1. For ‘On Demand’ events, such as please can you make the heading lines for date and speaker slightly smaller and less bold. Maybe try h4 and see if it looks ok?
    2. For all event boxes please can you make the titles (e.g. ‘Emergency Contraception Encapsulated’ here slightly smaller, so they are a bit smaller than the ‘Lectures on Demand’ heading at the top of the page.
    3. For ‘On Demand’ event pages, please change ‘Recorded On:’ to ‘Recorded on:’
    4. For ‘On Demand’ event pages, please change ‘Topics Include:’ to ‘Topics include:’
    5. For ‘SRH’ event pages, please change ‘Topics Covered:’ to ‘Topics covered:’
    6. For ‘Webinar’ event pages, please change ‘Topics Covered:’ to ‘Topics covered:’