Support » Plugin: The Events Calendar » Order events by event time

  • cmsnext

    (@cmsnext)


    This query is about tribe_get_events under which I want to get todays events but ordered by time. Using start_date and end_date I am able to retrieve all events for today, but they come in the order the event had started and not as per time.

    I see _EventStartDate meta has the event start date and time. Is it possible to split the time and order events by time?

    Right now events show up like
    07:00 am
    09:00 am
    06:30 pm
    04:30 pm
    03:00 pm
    08:30 am

    but I want to sort the daily events by start time like this
    07:00 am
    08:30 am
    09:00 am
    03:00 pm
    04:30 pm
    06:30 pm

    Any help with sorting the events as per time? Thank you.

Viewing 15 replies - 1 through 15 (of 15 total)
  • Plugin Support Ed

    (@erishel)

    Hey there,

    Thanks for reaching out 😄

    There are some great examples of how to do this on this page (towards the bottom, last post with code) ► https://wordpress.org/support/topic/plugin-the-events-calendar-cannot-change-order-of-posts-in-query_posts/

    Hope that helps!

    cmsnext

    (@cmsnext)

    Hi,
    Yes if we use

    'orderby' =>'meta_value',
    'meta_key' => '_EventStartDate',
    'order' => 'ASC',

    it does order by Event Start date and I get the above result.

    But like I said I want to order by event time (which is part of event start date).

    Right now events show up like
    07:00 am
    09:00 am
    06:30 pm
    04:30 pm
    03:00 pm
    08:30 am

    but I want to sort the daily events by start time like this
    07:00 am
    08:30 am
    09:00 am
    03:00 pm
    04:30 pm
    06:30 pm

    Any help with sorting the events as per time? Thank you.

    @erishel Hi Any help or documentation I could look at? Is such a feature available in the Pro version? Where we can order by time? Because we definitely need this feature to work. Thanks

    Plugin Support Ed

    (@erishel)

    Hey there,

    By default, your events should be ordered by time, see our demo ► https://wpshindig.com/events/month/

    I’d give a run through our Testing for Conflicts guide as something may be modifying that query.

    Take care,
    Ed 🤟

    @erishel Sorry thats wrong. I just did a test installation and created 3 events. If event begin date is same then yes, it takes time into consideration, but if date is different but time is before any other time – it does not arrange by time. It only arranges by date first and then by time.

    Please refer to
    https://imgur.com/id9ncCm
    https://imgur.com/CzUjXo8

    Plugin Support Ed

    (@erishel)

    Hey there,

    Yes, it’s going to order by the date first, then order each day time. This screenshot that you shared is correct ► https://imgur.com/CzUjXo8

    You could probably come up with a query that uses custom sorting, but this isn’t something that we’re able to support here.

    Using something like this in your query may work:

    $query->set( 'orderby', '__EventStartTime' );
    $query->set( 'order', 'ASC' );

    This will sort ALL events by time, so you could have an event on 1/22 that starts at 3AM show before an event on 1/2 that starts at 3PM. This is why we sort the events the way we do.

    Hope that helps!

    Take care,
    Ed 🤟

    • This reply was modified 8 months, 1 week ago by Ed. Reason: code formatting

    @erishel . Thanks but there is no __EventStartTime meta key only _EventStartDate.

    Well I personally think the query should be built into the Events Calendar function because right now there is no way we can order events for a specific day by time.

    If you have some ready made function on how we can split the date and time and simply order by time for individual dates I could work something out because order by time is quite important for my project as we have multiple daily + ongoing events so order by time is mandatory. Thanks

    @erishel or anyone else from The Events Calendar? Been almost 2 months since I started this topic and still not received a solution. I think definitely order by time for daily events is a basic requirement for any Calendar. Any help?

    Plugin Author Barry

    (@barryhughes-1)

    Hi @cmsnext,

    Been almost 2 months since I started this topic and still not received a solution.

    Please do remember that first and foremost these are community forums—not a dedicated help desk.

    We always like to point our users in the right direction if we can, but it’s also true that—especially when it comes to custom coding tasks—we are pretty limited in terms of how much support we can provide. Ed alluded to this earlier on and we also try to make the scope of support clear in sticky posts like this one.

    If you require greater depth of support and a guarantee of responses, we can do that: but you would need to purchase a license key and post your question on our official help desk instead 🙂

    I think definitely order by time for daily events is a basic requirement for any Calendar.

    I agree! In fact, this functionality is baked in already and you can see it in action if you take a peek at the single day view. Here’s an example of that.

    If you are trying to recreate this in order to build a custom event view or list, that’s great—but we’re going to need to leave you to figure out the logic for this under your own steam.

    Should it be helpful, note that you can certainly make use the tribe_get_events() function to retrieve a date ordered list of events and a guide covering basic usage of this function can be found here. So, if you haven’t yet seen this, it could be a great starting point for you.

    Good luck with the project!

    @barryhughes-1 Thanks a lot for your detailed response.

    I definitely agree this is a community forum – and if you do read my initial comments I have clearly asked if this feature is present in the Pro Version (which means I am ready to pay for the Pro Version if the functionality is available in that version).

    I checked the link you shared and like I mentioned earlier above

    Sorry thats wrong. I just did a test installation and created 3 events. If event begin date is same then yes, it takes time into consideration, but if date is different but time is before any other time – it does not arrange by time. It only arranges by date first and then by time.

    Please refer to
    https://imgur.com/id9ncCm
    https://imgur.com/CzUjXo8

    The above was created using default wordpress installation with default theme and basic plugin installation. So for example you publish an event starting on 10th April 2019 for 7:30 AM and publish another event on 10th April 2019 for 8:00 AM it correctly orders by time. But say if you publish one event starting 10th April and another on 11th April then it first arranges by Date then by time of publishing the event (and not just by time). So for example your 11th April event starts at 9AM and the 10th April event starts at 10 AM. But when you display using default calendar month view or day view you can see that the arrangement is as per Start Date and not by time.

    Let me know if there is a solution for my issue. Thanks

    Plugin Author Barry

    (@barryhughes-1)

    Events Calendar PRO builds on top of The Events Calendar: the underlying logic for querying events actually remains the same (so, to be clear, my note about purchasing a license was really just to highlight a means of giving you access to our paid support channels).

    But say if you publish one event starting 10th April and another on 11th April then it first arranges by Date then by time of publishing the event (and not just by time).

    Sure—I think see what you’re saying. Suppose you query for all events taking place between July 1 and July 3, inclusive. You might get back something like this:

    • Event A – 2019-07-01 1000
    • Event B – 2019-07-01 1730
    • Event C – 2019-07-02 0900
    • Event D – 2019-07-03 0730

    It sounds like you want a means of getting back the same set of events, but ordered as follows:

    • Event D – 2019-07-03 0730
    • Event C – 2019-07-02 0900
    • Event A – 2019-07-01 1000
    • Event B – 2019-07-01 1730

    If so, I’m afraid it’s highly unlikely we would add a means of doing this. Instead, you would need to perform custom sorting. That said, you are welcome to propose a change. If you can outline a good use case and it receives upvotes from others we’ll certainly consider it, but I can’t guarantee anything 🙂

    cmsnext

    (@cmsnext)

    @barryhughes-1 Thanks. Sure I will add the request to uservoice, but I think this functionality should have been in the plugin by default! Mainly because you definitely want events ordered by time for each day. Like there are multi day events so people want to schedule based on start time.

    Plugin Author Barry

    (@barryhughes-1)

    Please do, we’ll certainly review it 🙂

    In the meantime, a custom sort of the results or else building your list of events by querying each day separately could be good ways to go.

    Thanks again!

    cmsnext

    (@cmsnext)

    @barryhughes-1 Thanks for your suggestion of building events by day. But even with default setup if you see this image which I shared

    https://imgur.com/CzUjXo8

    Ongoing Events by Date – for individual dates too it does not arrange events by time. It arranges first by date then by time. I checked the link you shared

    https://wpshindig.com/events/2019-08-07/

    And that does arrange it a bit different. I think the demo shared is of the pro version and when you add recurring / ongoing events in Pro most possibly its creating multiple posts for the same event and thus what you have is 1 post per date and thus it automatically arranges each date by time and thus result is correct. Why I think you are creating multiple posts is because when I click on a Event – it shows a date after each URL. In my case I dont see any date after each URL.

    Like this –
    https://wpshindig.com/event/womens-javascript-study-group/2019-08-14/

    https://wpshindig.com/event/womens-javascript-study-group/2019-08-21/

    In my case the URL ends here –
    https://wpshindig.com/event/womens-javascript-study-group/
    [nodate after url]

    Now if you are creating so many posts – wont that affect performance for example if you have 10 events running for 1 month – if you are creating 1 post per date it means for 30 days you create 30 posts X 10 events which is 300 posts!

    I am not sure how your pro version works but my understanding is based on the URLs I checked as I think 1 URL = 1 post. Kindly correct me if I am wrong. Thanks.

    • This reply was modified 7 months ago by cmsnext. Reason: error in URL linked
    Plugin Author Barry

    (@barryhughes-1)

    Exactly—when using the recurring event functionality provided by Events Calendar PRO the result is that multiple events (posts) are generated and you can think of them as all being linked together, as part of the same series.

    The performance challenges are the same as if you created the same number of events manually, so that’s certainly something to be mindful of, but features such as month view caching can help mitigate this.

    Ongoing Events by Date – for individual dates too it does not arrange events by time. It arranges first by date then by time.

    Sure, that’s exactly how it is designed to function.

    Looking at your test event (‘Test 2’) my suspicion is that what you really want is for this to behave much like a recurring event: that is, you actually have a series of identical/related events running from 7.30am to 5.00pm each day from February 8 until March 30.

    Given that, I can see why you are requesting a different way to order things, and recurring event functionality is probably the best fit for this. The next based way to model things would be manually creating individual events (though I realize, in this case, that may involve quite a lot of work).

    Setting up long running events as you are doing is certainly another way to come at the problem, but it’s important to understand that from the software’s perspective this is indeed seen as a long running event, starting at 7.30am on February 8 and running continuously without interruption until 5.00pm on March 30. That is why things are being ordered in your example the way they are.

Viewing 15 replies - 1 through 15 (of 15 total)
  • The topic ‘Order events by event time’ is closed to new replies.