• Resolved Jim Reekes

    (@reekes)


    This may be more of a PHP question than something about this plugin specifically.

    I’m beating my head against the wall after a couple days. I must be doing something stupid, but I surrender. I had this working, and after building out more of the site came back to this page and found it broken. Everything I tried to fix it has failed.

    In the event page I want to list all other events for the current event’s category. The basic idea is to call eo_get_events() and pass ‘event-category’=> as the slug for the current post’s category. Note that I do assume there’s only one category. That’s all I care about.

    So I do this:

    $terms = get_the_terms( $post->ID, 'event-category' );

    Then this (which had worked):

    $upcoming = eo_get_events(array(
    'event-category'=>$terms[0]->slug

    For some reason, this broke and I’ve been banging my head to get it working again.

    All attempts at PHP have failed me, but I readily admit PHP is a new language for me (yet I have programmed in many others).

    If I use this, it does pull out the slug I’m looking for:

    foreach ( $terms as $term )
      $currentCategory = $term->slug;

    So why does the “foreach” loop work, but EVERYTHING else I’ve tried to access the current slug has failed.

    How can I get to the first occurrence, without looping through the array with foreach?

    https://www.ads-software.com/plugins/event-organiser/

Viewing 5 replies - 1 through 5 (of 5 total)
  • Thread Starter Jim Reekes

    (@reekes)

    FYI – echo var_dump ($terms);

    array(1) { [348]=> object(stdClass)#644 (12) { [“term_id”]=> int(348) [“name”]=> string(48) “BLAH” [“slug”]=> string(9) “THIS_CATEGORY” [“term_group”]=> int(0) [“term_taxonomy_id”]=> int(379) [“taxonomy”]=> string(14) “event-category” [“description”]=> string(46) “BLAH” [“parent”]=> int(353) [“count”]=> int(5) [“object_id”]=> int(9195) [“filter”]=> string(3) “raw” [“color”]=> string(7) “#42217E” } }

    Note – I edited the text of some fields just for this post. Nothing meaningful. It’s the data structure that matters.

    Plugin Author Stephen Harris

    (@stephenharris)

    The returned array is indexed by term ID. So to access the first element you’ll need to use array_shift().

    Thread Starter Jim Reekes

    (@reekes)

    I’m feeling stupid. Can you be more explicit?

    If I do this:

    array_shift($terms);
    var_dump ($terms);

    I get this:

    array(0) { }

    And after that I have just more head banging.

    I keep thinking there’s just one or two lines of code that would get me the category slug I’m looking for, to pass to eo_get_events().

    Plugin Author Stephen Harris

    (@stephenharris)

    Yup,

    $first_term = array_shift( $terms );
    //$terms now has the first element in the array removed
    $first_term_slug = $first_term->slug;
    Thread Starter Jim Reekes

    (@reekes)

    D’oh!

    Thanks

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘How to list all events for current category’ is closed to new replies.