Support

Account

Home Forums ACF PRO have_rows causing infinite loop when getting repeater values from another page Reply To: have_rows causing infinite loop when getting repeater values from another page

  • Hi John,
    I’ve drawn up a little diagram to further explain what I’m doing here.

    Here’s a point-by-point explanation:

    • Both pages use flexible content layouts, so they both include have_rows()
    • Page 2 includes a flexible content layout that has a repeater inside
    • That block has a text field “block_id”, where a user can give it a unique name (we’re using “targetblock”)
    • We want to include “targetblock” on another page
    • Page 1 includes a flexible content layout, “block_reference” that includes two fields:
      • “target_block” – text field where users can enter the unique name of the target layout to include
      • “target_page” – post object field where users can select the page that has the target layout on it
    • “block_reference” does a few things:
      • Loops through the flexible layouts on the target_page
      • Checks if there’s a “block_id” field that matches “target_block”
      • If found, it includes whatever that flexible content layout would normally include (in this case, a repeater field)

    All of this is working as long as the block that we’re trying to pull from Page 2 doesn’t include another have_rows() call. I’ve explored the plugin code a bit, and it looks like there’s a case where it breaks in api/api-template.php around line 489.

    I’m going to do some more testing, but the main problem is that it’s resetting the have_rows() loop for Page 1, causing the entire page to be re-generated, which includes the item from Page 2 again, causing the infinite loop.

    I’m aware of the potential for including another “block_reference” from another page, and have added some code to avoid this.

    Thanks again for your help,
    Scott