{"id":51668,"date":"2016-10-22T14:12:13","date_gmt":"2016-10-22T14:12:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/panda-pods-repeater-field\/"},"modified":"2026-06-03T13:43:18","modified_gmt":"2026-06-03T13:43:18","slug":"panda-pods-repeater-field","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/panda-pods-repeater-field\/","author":15122010,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.14","stable_tag":"1.5.14","tested":"7.0","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Panda Pods Repeater Field","header_author":"Dongjie Xu","header_description":"","assets_banners_color":"121f25","last_updated":"2026-06-03 13:43:18","external_support_url":"","external_repository_url":"","donate_link":"http:\/\/www.multimediapanda.co.uk\/product\/panda-pods-repeater-field\/","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/panda-pods-repeater-field\/","header_author_uri":"http:\/\/www.multimediapanda.co.uk\/","rating":4.5,"author_block_rating":0,"active_installs":600,"downloads":26397,"num_ratings":11,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"codingpanda","date":"2016-10-22 22:25:13"},"1.0.6":{"tag":"1.0.6","author":"codingpanda","date":"2016-10-28 16:05:59"},"1.0.7":{"tag":"1.0.7","author":"codingpanda","date":"2016-11-06 14:54:56"},"1.0.8":{"tag":"1.0.8","author":"codingpanda","date":"2016-11-22 21:10:39"},"1.0.9":{"tag":"1.0.9","author":"codingpanda","date":"2017-02-18 10:59:05"},"1.1.0":{"tag":"1.1.0","author":"codingpanda","date":"2017-03-04 11:39:03"},"1.1.1":{"tag":"1.1.1","author":"codingpanda","date":"2017-04-25 19:28:11"},"1.1.2":{"tag":"1.1.2","author":"codingpanda","date":"2017-05-16 16:19:27"},"1.1.3":{"tag":"1.1.3","author":"codingpanda","date":"2017-07-01 18:28:24"},"1.1.4":{"tag":"1.1.4","author":"codingpanda","date":"2017-07-09 11:34:54"},"1.1.5":{"tag":"1.1.5","author":"codingpanda","date":"2017-10-22 09:32:59"},"1.1.6":{"tag":"1.1.6","author":"codingpanda","date":"2017-08-19 17:00:04"},"1.1.7":{"tag":"1.1.7","author":"codingpanda","date":"2017-10-22 09:32:59"},"1.1.8":{"tag":"1.1.8","author":"codingpanda","date":"2017-11-25 12:58:08"},"1.1.9":{"tag":"1.1.9","author":"codingpanda","date":"2018-01-31 19:57:40"},"1.2.0":{"tag":"1.2.0","author":"codingpanda","date":"2018-05-06 13:08:30"},"1.2.1":{"tag":"1.2.1","author":"codingpanda","date":"2018-08-12 20:05:01"},"1.3.0":{"tag":"1.3.0","author":"codingpanda","date":"2018-08-20 20:10:25"},"1.3.1":{"tag":"1.3.1","author":"codingpanda","date":"2018-10-29 10:47:03"},"1.3.2":{"tag":"1.3.2","author":"codingpanda","date":"2018-10-29 19:09:30"},"1.3.3":{"tag":"1.3.3","author":"codingpanda","date":"2018-11-03 13:02:59"},"1.3.4":{"tag":"1.3.4","author":"codingpanda","date":"2018-11-18 20:39:53"},"1.3.5":{"tag":"1.3.5","author":"codingpanda","date":"2018-11-19 18:47:27"},"1.3.6":{"tag":"1.3.6","author":"codingpanda","date":"2018-12-09 14:03:15"},"1.3.7":{"tag":"1.3.7","author":"codingpanda","date":"2019-03-23 16:40:07"},"1.3.8":{"tag":"1.3.8","author":"codingpanda","date":"2019-04-14 14:40:34"},"1.4.0":{"tag":"1.4.0","author":"codingpanda","date":"2019-04-20 19:26:34"},"1.4.1":{"tag":"1.4.1","author":"codingpanda","date":"2019-05-27 19:16:48"},"1.4.10":{"tag":"1.4.10","author":"codingpanda","date":"2021-10-21 19:19:45"},"1.4.11":{"tag":"1.4.11","author":"codingpanda","date":"2022-01-15 18:24:45"},"1.4.2":{"tag":"1.4.2","author":"codingpanda","date":"2019-06-22 10:59:57"},"1.4.3":{"tag":"1.4.3","author":"codingpanda","date":"2019-09-22 14:17:46"},"1.4.4":{"tag":"1.4.4","author":"codingpanda","date":"2020-02-03 19:25:08"},"1.4.5":{"tag":"1.4.5","author":"codingpanda","date":"2020-07-26 10:35:11"},"1.4.6":{"tag":"1.4.6","author":"codingpanda","date":"2020-07-30 09:34:08"},"1.4.7":{"tag":"1.4.7","author":"codingpanda","date":"2020-12-09 22:54:18"},"1.4.8":{"tag":"1.4.8","author":"codingpanda","date":"2021-03-27 11:54:08"},"1.4.9":{"tag":"1.4.9","author":"codingpanda","date":"2021-07-12 13:50:47"},"1.5.0":{"tag":"1.5.0","author":"codingpanda","date":"2022-02-12 10:47:42"},"1.5.1":{"tag":"1.5.1","author":"codingpanda","date":"2022-04-23 18:08:54"},"1.5.10":{"tag":"1.5.10","author":"codingpanda","date":"2023-04-30 17:34:57"},"1.5.11":{"tag":"1.5.11","author":"codingpanda","date":"2024-04-08 17:16:04"},"1.5.12":{"tag":"1.5.12","author":"codingpanda","date":"2026-05-26 15:56:03"},"1.5.13":{"tag":"1.5.13","author":"codingpanda","date":"2026-05-26 16:34:49"},"1.5.14":{"tag":"1.5.14","author":"codingpanda","date":"2026-06-03 13:43:18"},"1.5.2":{"tag":"1.5.2","author":"codingpanda","date":"2022-12-04 14:53:50"},"1.5.3":{"tag":"1.5.3","author":"codingpanda","date":"2022-12-06 20:54:30"},"1.5.4":{"tag":"1.5.4","author":"codingpanda","date":"2022-12-22 12:15:12"},"1.5.5":{"tag":"1.5.5","author":"codingpanda","date":"2022-12-23 12:37:34"},"1.5.6":{"tag":"1.5.6","author":"codingpanda","date":"2022-12-24 11:07:01"},"1.5.7":{"tag":"1.5.7","author":"codingpanda","date":"2022-12-29 15:25:27"},"1.5.8":{"tag":"1.5.8","author":"codingpanda","date":"2022-12-29 15:44:36"},"1.5.9":{"tag":"1.5.9","author":"codingpanda","date":"2023-02-12 16:13:45"}},"upgrade_notice":{"1.0.6":"<p>Fixed an issue on the user profile page.<\/p>","1.0.7":"<p>Fixed an issue when using the plugin within Advanced Content Types.<\/p>","1.0.8":"<p>Fixed ordering by pandarf_order on the front end.<\/p>","1.0.9":"<p>Changed the time format from h:i:s to H:i:s.<\/p>","1.1.0":"<p>Added the add_tb_prefix parameter to the pandarf_items_fn() and pandarf_insert APIs so they can be used for all tables.\nAdded the pods_post_delete() action to pods_api_post_delete_pod_item.\nAdded the pprf_action_pods_post_delete() action to pods_post_delete.\nAdded the pprf_filter_pods_post_delete() filter to pods_api_post_delete_pod_item.\nAdded the pprf_action_pods_post_save() action to pods_post_save.\nAdded the pprf_filter_pods_post_save() filter to pods_api_post_delete_pod_item.\nAdded auto-expanding when adding and editing an item.\nUpdated the interface.<\/p>","1.1.1":"<p>Fixed an issue where, after deleting an item, the label still stayed.\nUpdated the interface.<\/p>","1.1.2":"<p>Added new close and expand bars on the top and bottom.\nMoved the delete button from the iframe to the parent window.\nSimplified reordering.<\/p>","1.1.3":"<p>Added a Save button on the bar.\nFixed inserting pandarf_order on the front end by casting the string as a number.\nRemoved the add_action( &#039;save_post&#039;, array( $tableAsRepeater_cla, &#039;update_child_pod&#039; ), 10, 3 ) call, which is no longer needed.<\/p>","1.1.4":"<p>Added the is_pandarf_fn( $fieldName_str ) API to check if a field is a Panda Pods Repeater Field.\nAdded the pandarf_get_data( $data_arr, $parent_pod_name ) API to fetch repeater data for a data row from a database table.\nAdded integration with pods_field().<\/p>","1.1.5":"<p>Fixed an issue where a newly created item fetched data from other parent posts when using pods_field.<\/p>","1.1.6":"<p>Added support for returning file and user IDs for relation types of &#039;user&#039;, &#039;post type&#039;, &#039;pod&#039; and &#039;media&#039;.\nAdded support for limiting the number of entries.<\/p>","1.1.7":"<p>Fixed an issue where the &quot;Add New&quot; button disappeared if the number of entries was set to 0.<\/p>","1.1.8":"<p>The plugin now uses pods_register_field_type() to register Panda Pods Repeater Field.\nFixed some styling issues.\nFixed the Pods relationship field ordering issue.\nAdded alerts when changes are not saved.<\/p>","1.1.9":"<p>Fixed an issue where expanding and collapsing called pprf_resize_window() too many times, sometimes before the iframe was ready.\nAdded the ability to move items to Trash and restore them from Trash.<\/p>","1.2.0":"<p>The plugin now saves the table post_name instead of ID to solve migration issues. This will not affect saved data, but you will need to update the field in Pods and choose the correct table again to migrate properly.\nFixed an issue where using the same field name in two tables did not return the right data.<\/p>","1.2.1":"<p>Enhanced AJAX security.\nAdded support for front-end Pods forms.\nFixed an issue where newly added items could only be deleted, not moved to Trash.<\/p>","1.3.0":"<p>Added Load More functionality.\nAdded order options.\nReordering now updates colours.\nUpdated code according to Pods official reviews.<\/p>","1.3.1":"<p>Changed drag-and-drop tolerance from &quot;pointer&quot; to &quot;intersect&quot;.\nFixed an issue where only ten items were loaded when Enable Load More was set to No.<\/p>","1.3.2":"<p>Fixed the date field display issue.<\/p>","1.3.3":"<p>pods-&gt;delete() did not work reliably, so a $wpdb query is used for now.<\/p>","1.3.4":"<ul>\n<li>Fixed: An issue with pods-&gt;delete().<\/li>\n<li>Added: Support for using Admin Table Columns for labels.<\/li>\n<\/ul>","1.3.5":"<ul>\n<li>Fixed: An issue where pandarf_items_fn did not respond when the order field was changed.<\/li>\n<li>Fixed: A typo.<\/li>\n<\/ul>","1.3.6":"<ul>\n<li>Fixed: An issue where an empty order field loaded data in descending order.<\/li>\n<li>Changed: Adjusted some icons&#039; padding and margin.<\/li>\n<\/ul>","1.3.7":"<ul>\n<li>Fixed: An issue where pods_field() did not fetch data in AJAX.<\/li>\n<\/ul>","1.3.8":"<ul>\n<li>Updated: Optimised some code.<\/li>\n<li>Added: The ability to reassign an item to another parent field using the same child table.<\/li>\n<\/ul>","1.4.0":"<ul>\n<li>Changed: How a repeater field is rendered so it can be displayed on the front end for non-logged-in users.<\/li>\n<li>Changed: Filter names from &quot;pprf_load_panda_repeater_allow&quot; to &quot;pprf_load_panda_repeater_allow_input&quot; and from &quot;pprf_load_panda_repeater_allow_msg&quot; to &quot;pprf_load_panda_repeater_allow_input_msg&quot;.<\/li>\n<li>Changed: JavaScript from &#039;live&#039; to &#039;on&#039;.<\/li>\n<li>Added: The ability to allow selected user roles to access the field.<\/li>\n<li>Fixed: An issue where the field opened and closed immediately on mobile.<\/li>\n<\/ul>","1.4.1":"<ul>\n<li>Changed: Made JavaScript alerts translatable.<\/li>\n<li>Added: Chinese language support.<\/li>\n<li>Fixed: An error when a Pods table did not exist.<\/li>\n<li>Fixed: An error on multisite.<\/li>\n<li>Fixed: An error when a repeater field is a custom post type, although using a custom post type as a repeater field is not part of the plan.<\/li>\n<\/ul>","1.4.2":"<ul>\n<li>Added: The pandarf_pods_field_fields filter.<\/li>\n<\/ul>","1.4.3":"<ul>\n<li>Added: Locked down the font size in the form so it will not be affected by the theme.<\/li>\n<li>Changed: $pods_obj-&gt;id to $pods_obj-&gt;id() in pandarf_pods_field() to fix an issue in the REST API.<\/li>\n<\/ul>","1.4.4":"<ul>\n<li>Fixed: TypeError: Backbone.Marionette is undefined.<\/li>\n<li>Fixed: $(...).live is not a function error using jQuery.<\/li>\n<\/ul>","1.4.5":"<ul>\n<li>Added: Code to add the relationship fields if they are missing. This is useful for migrating repeater fields or creating them with code.<\/li>\n<li>Fixed: The &quot;$ is not a function&quot; issue when clicking the Load button.<\/li>\n<li>Changed: The window now resizes after running all JavaScript.<\/li>\n<\/ul>","1.4.6":"<ul>\n<li>Fixed: An issue where the trash, save, and edit buttons had to be clicked twice on mobile before they worked.<\/li>\n<li>Added: Styling for the Load More div.<\/li>\n<li>Added: Integration with Simpods Area Field.<\/li>\n<li>Security: Removed all tags from label outputs and limited label text to 80 characters. If a label contains images, videos, audio, or shortcodes, relevant icons are displayed.<\/li>\n<\/ul>","1.4.7":"<ul>\n<li>Fixed: An issue where the database class was not included in the pandarf_items_fn function.<\/li>\n<\/ul>","1.4.8":"<ul>\n<li>Updated: Simpods Area Field integration for Simpods 3.0.0.<\/li>\n<li>Added: Minified CSS and JavaScript files.<\/li>\n<li>Added: The load_pprf_scripts_frontend filter to toggle loading PPRF scripts and styles on the front end.<\/li>\n<li>Added: More front-end CSS.<\/li>\n<li>Updated: JavaScript for the WordPress 5.6 update.<\/li>\n<\/ul>","1.4.9":"<ul>\n<li>Changed: index.php is now used for pandarepeaterfield.php.<\/li>\n<li>Changed: click() to trigger(&#039;click&#039;).<\/li>\n<li>Changed: Reassign now also works for parent tables with meta storage type.<\/li>\n<li>Updated: wp_localize_script handling for WordPress 5.7.<\/li>\n<li>Updated: Support for Pods 2.8, which uses parent instead of pod_id.<\/li>\n<li>Fixed: A bug in the order query.<\/li>\n<\/ul>","1.4.10":"<ul>\n<li>Added: When displaying labels with admin columns, simple relationships now display labels instead of values.<\/li>\n<li>Fixed: A bug when using PHP 8.<\/li>\n<\/ul>","1.4.11":"<ul>\n<li>Updated: Compatibility with Pods 2.8.<\/li>\n<\/ul>","1.5.0":"<ul>\n<li>Changed: Removed _fn suffixes in function names and updated many variable names to match WordPress coding standards.<\/li>\n<li>Fixed: An issue where a pod_index exists in the postmeta table but is not used as a field in the pod table.<\/li>\n<li>Added: Use of the simpods_tables cache if available, to avoid duplicate queries.<\/li>\n<li>Added: WordPress cache usage for checking if a field is a Panda Pods Repeater Field.<\/li>\n<li>Added: When a new entry is added, it will use the admin columns if required.<\/li>\n<\/ul>","1.5.1":"<ul>\n<li>Fixed: The sorting issue caused by WordPress 5.9.<\/li>\n<\/ul>","1.5.2":"<ul>\n<li>Fixed: The sorting issue in settings caused by WordPress 5.9.<\/li>\n<li>Fixed: An issue where pandarf_insert could not insert files.<\/li>\n<li>Fixed: The integration issue after Pods 2.8.<\/li>\n<li>Fixed: An issue where the &quot;Please save the parent first&quot; message stopped appearing.<\/li>\n<li>Fixed: An issue where the child pod became available when the parent was not saved.<\/li>\n<li>Fixed: An issue where a newly added item could not display admin columns.<\/li>\n<\/ul>","1.5.3":"<ul>\n<li>Added: The pprf_parent_filter_conditions() filter to filter the parent dropdown for reassignment and duplication.<\/li>\n<li>Added: Duplication functionality.<\/li>\n<li>Added: Functionality to delete item descendants when a parent item is deleted.<\/li>\n<li>Added: A constant to toggle deleting item descendants, so users see the reminder to create backups before using it.<\/li>\n<li>Added: IDs to the parents dropdown list.<\/li>\n<\/ul>","1.5.4":"<ul>\n<li>Updated: Applied coding standards.<\/li>\n<\/ul>","1.5.5":"<ul>\n<li>Updated: Applied more coding standards.<\/li>\n<\/ul>","1.5.6":"<ul>\n<li>Updated: Applied more coding standards.<\/li>\n<\/ul>","1.5.7":"<ul>\n<li>Updated: Applied more coding standards.<\/li>\n<\/ul>","1.5.8":"<ul>\n<li>Removed: Front-end access.<\/li>\n<\/ul>","1.5.9":"<ul>\n<li>Updated: Re-organised the positions of some code.<\/li>\n<\/ul>","1.5.10":"<ul>\n<li>Fixed: An issue where custom database fields were not created after Pods 2.7.<\/li>\n<\/ul>","1.5.11":"<ul>\n<li>Fixed: An issue where items were also fetched from Trash.<\/li>\n<li>Updated: Removed the instructions for using the repeater form on the front end.<\/li>\n<\/ul>","1.5.12":"<ul>\n<li>Fixed: An issue where the repeater field table was saved as 0 when there was only one.<\/li>\n<\/ul>","1.5.13":"<p>Security hardening and compatibility updates for WordPress 7.0, PHP 7.4+, and current Pods releases.<\/p>","1.5.14":"<p>Fixed support for hyphenated Pods\/Panda repeater table identifiers while preserving the SQL identifier safety checks. Compatibility confirmed with Pods 3.3.9.<\/p>"},"ratings":{"1":1,"2":0,"3":0,"4":1,"5":9},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":1520380,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":1520380,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.0.6","1.0.7","1.0.8","1.0.9","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","1.1.8","1.1.9","1.2.0","1.2.1","1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.8","1.4.0","1.4.1","1.4.10","1.4.11","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.4.8","1.4.9","1.5.0","1.5.1","1.5.10","1.5.11","1.5.12","1.5.13","1.5.14","1.5.2","1.5.3","1.5.4","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":1520013,"resolution":"1","location":"assets","locale":"","width":157,"height":153},"screenshot-10.png":{"filename":"screenshot-10.png","revision":2068472,"resolution":"10","location":"assets","locale":"","width":511,"height":810},"screenshot-11.png":{"filename":"screenshot-11.png","revision":1541417,"resolution":"11","location":"assets","locale":"","width":1186,"height":780},"screenshot-12.png":{"filename":"screenshot-12.png","revision":1541417,"resolution":"12","location":"assets","locale":"","width":858,"height":264},"screenshot-13.png":{"filename":"screenshot-13.png","revision":1541417,"resolution":"13","location":"assets","locale":"","width":1478,"height":1047},"screenshot-14.png":{"filename":"screenshot-14.png","revision":1541417,"resolution":"14","location":"assets","locale":"","width":1187,"height":750},"screenshot-15.png":{"filename":"screenshot-15.png","revision":1645218,"resolution":"15","location":"assets","locale":"","width":1187,"height":187},"screenshot-16.png":{"filename":"screenshot-16.png","revision":1541417,"resolution":"16","location":"assets","locale":"","width":864,"height":433},"screenshot-17.png":{"filename":"screenshot-17.png","revision":1541417,"resolution":"17","location":"assets","locale":"","width":707,"height":437},"screenshot-18.png":{"filename":"screenshot-18.png","revision":1541418,"resolution":"18","location":"assets","locale":"","width":767,"height":233},"screenshot-19.png":{"filename":"screenshot-19.png","revision":2068476,"resolution":"19","location":"assets","locale":"","width":561,"height":1066},"screenshot-2.png":{"filename":"screenshot-2.png","revision":1520013,"resolution":"2","location":"assets","locale":"","width":873,"height":473},"screenshot-20.png":{"filename":"screenshot-20.png","revision":1968247,"resolution":"20","location":"assets","locale":"","width":1374,"height":354},"screenshot-21.png":{"filename":"screenshot-21.png","revision":1968247,"resolution":"21","location":"assets","locale":"","width":509,"height":616},"screenshot-22.png":{"filename":"screenshot-22.png","revision":1968247,"resolution":"22","location":"assets","locale":"","width":1160,"height":366},"screenshot-3.png":{"filename":"screenshot-3.png","revision":1520013,"resolution":"3","location":"assets","locale":"","width":867,"height":441},"screenshot-4.png":{"filename":"screenshot-4.png","revision":1520013,"resolution":"4","location":"assets","locale":"","width":856,"height":476},"screenshot-5.png":{"filename":"screenshot-5.png","revision":1520013,"resolution":"5","location":"assets","locale":"","width":865,"height":565},"screenshot-6.png":{"filename":"screenshot-6.png","revision":1520013,"resolution":"6","location":"assets","locale":"","width":866,"height":582},"screenshot-7.png":{"filename":"screenshot-7.png","revision":1524169,"resolution":"7","location":"assets","locale":"","width":789,"height":307},"screenshot-8.png":{"filename":"screenshot-8.png","revision":1524169,"resolution":"8","location":"assets","locale":"","width":840,"height":646},"screenshot-9.png":{"filename":"screenshot-9.png","revision":1524169,"resolution":"9","location":"assets","locale":"","width":859,"height":718}},"screenshots":{"1":"After activating the Pods Framework, activate Advanced Content Types and Table Storage in Pods Admin, under the Components section.","2":"Activate Advanced Content Types.","3":"Activate Table Storage.","4":"This example shows how to use the plugin. First, add a new Pod. In Pods, click Create New.","5":"Create a new Pod with Advanced Content Types. In this tutorial, we call it \"Comic Content\".","6":"We are going to use Comic Content as the storage for a repeater field.","7":"Under the Admin UI tab, untick Show Admin Menu in Dashboard, because items added there are not linked to any parent posts.","8":"Now create a new post type in Pods. Name it \"Comic\" and use table-based storage because we want to reduce the burden on the WordPress posts table.","9":"Once it has been created, add a new field to Comic. We name it \"Comic Box 1\" here. At the bottom of the Field Type list, you will find Pods Table As Repeater Field. Select it and then click the \"Additional Field Options\" tab.","10":"Now you can see the Pods table \"comic_content\" created earlier in the dropdown. Select it, add or update the field, and save the Pod. You can set the field width, which defaults to 100%. You can also limit the number of repeater field entries. Enable Trash allows you to move items to Trash and restore them if needed. Trashed items will not be returned by pods_field() or pandarf_items_fn(), but if you disable Trash later on, trashed items will still be returned. There are other advanced options to choose from. They should be self-explanatory.","11":"If you are using nested repeater fields, I recommend setting the field width to 100%. This is a sample of nested repeater fields.","12":"The setup is complete.","13":"When you add a new Comic, you will see \"Comic Box 1\" in the More Fields area.","14":"You can add as many new items to Comic Box 1 as you want, and they are only attached to the current Comic you are editing.","15":"You can click the top bar to collapse it and the bottom bar to expand the window.","16":"To find the parent_pod_id and parent_pod_field_id, go to Pods and click the main Pod (Comics in this tutorial).","17":"Here, 2215 is parent_pod_id and 2222 is parent_pod_field_id.","18":"To find the parent_pod_post_id, open the main post and look at the URL. If you are using a Pods Advanced Content Type or a custom post type as the main table, it is the \"id\" variable in the URL. If you add a repeater field to Settings, the parent post ID is the same as parent_pod_id. If you add a repeater field to Users, the parent post ID is the same as the user ID.","19":"The Load More functionality settings.","20":"Instructions for the Load More functionality.","21":"The Order option settings.","22":"Display Order Info settings."}},"plugin_section":[],"plugin_tags":[2329,125397,2216],"plugin_category":[],"plugin_contributors":[265669],"plugin_business_model":[],"class_list":["post-51668","plugin","type-plugin","status-publish","hentry","plugin_tags-pods","plugin_tags-repeater-field","plugin_tags-storage","plugin_contributors-codingpanda","plugin_committers-codingpanda"],"banners":{"banner":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/banner-772x250.png?rev=1520380","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/icon-128x128.png?rev=1520380","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-1.png?rev=1520013","caption":"After activating the Pods Framework, activate Advanced Content Types and Table Storage in Pods Admin, under the Components section."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-2.png?rev=1520013","caption":"Activate Advanced Content Types."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-3.png?rev=1520013","caption":"Activate Table Storage."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-4.png?rev=1520013","caption":"This example shows how to use the plugin. First, add a new Pod. In Pods, click Create New."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-5.png?rev=1520013","caption":"Create a new Pod with Advanced Content Types. In this tutorial, we call it \"Comic Content\"."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-6.png?rev=1520013","caption":"We are going to use Comic Content as the storage for a repeater field."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-7.png?rev=1524169","caption":"Under the Admin UI tab, untick Show Admin Menu in Dashboard, because items added there are not linked to any parent posts."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-8.png?rev=1524169","caption":"Now create a new post type in Pods. Name it \"Comic\" and use table-based storage because we want to reduce the burden on the WordPress posts table."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-9.png?rev=1524169","caption":"Once it has been created, add a new field to Comic. We name it \"Comic Box 1\" here. At the bottom of the Field Type list, you will find Pods Table As Repeater Field. Select it and then click the \"Additional Field Options\" tab."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-10.png?rev=2068472","caption":"Now you can see the Pods table \"comic_content\" created earlier in the dropdown. Select it, add or update the field, and save the Pod. You can set the field width, which defaults to 100%. You can also limit the number of repeater field entries. Enable Trash allows you to move items to Trash and restore them if needed. Trashed items will not be returned by pods_field() or pandarf_items_fn(), but if you disable Trash later on, trashed items will still be returned. There are other advanced options to choose from. They should be self-explanatory."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-11.png?rev=1541417","caption":"If you are using nested repeater fields, I recommend setting the field width to 100%. This is a sample of nested repeater fields."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-12.png?rev=1541417","caption":"The setup is complete."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-13.png?rev=1541417","caption":"When you add a new Comic, you will see \"Comic Box 1\" in the More Fields area."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-14.png?rev=1541417","caption":"You can add as many new items to Comic Box 1 as you want, and they are only attached to the current Comic you are editing."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-15.png?rev=1645218","caption":"You can click the top bar to collapse it and the bottom bar to expand the window."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-16.png?rev=1541417","caption":"To find the parent_pod_id and parent_pod_field_id, go to Pods and click the main Pod (Comics in this tutorial)."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-17.png?rev=1541417","caption":"Here, 2215 is parent_pod_id and 2222 is parent_pod_field_id."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-18.png?rev=1541418","caption":"To find the parent_pod_post_id, open the main post and look at the URL. If you are using a Pods Advanced Content Type or a custom post type as the main table, it is the \"id\" variable in the URL. If you add a repeater field to Settings, the parent post ID is the same as parent_pod_id. If you add a repeater field to Users, the parent post ID is the same as the user ID."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-19.png?rev=2068476","caption":"The Load More functionality settings."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-20.png?rev=1968247","caption":"Instructions for the Load More functionality."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-21.png?rev=1968247","caption":"The Order option settings."},{"src":"https:\/\/ps.w.org\/panda-pods-repeater-field\/assets\/screenshot-22.png?rev=1968247","caption":"Display Order Info settings."}],"raw_content":"<!--section=description-->\n<p>Panda Pods Repeater Field is a plugin for the Pods Framework. It is more than a repeater field: it is a quick way to set up a relational database and present the data on the same page. It takes advantage of Pods table storage, so you don't need to worry about the posts and postmeta tables expanding dramatically and slowing down page loading. This plugin is compatible with Pods Framework 2.8 or later and has been updated for WordPress 7.0 and Pods 3.3.9. To download Pods Framework, please visit https:\/\/pods.io\/. After each update, please clear the cache to make sure the CSS and JS are updated. Usually, Ctrl + F5 will do the trick.<\/p>\n\n<h4>Introduction<\/h4>\n\n<p>[youtube https:\/\/www.youtube.com\/watch?v=8oUeROi62o8]\n[youtube https:\/\/www.youtube.com\/watch?v=H7YJLMPgG2U]<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/panda-pods-repeater-field<\/code> directory, or install the plugin directly through the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Add a Panda Repeater field from the Pods field editor.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20use%20it%3F\"><h3>How do I use it?<\/h3><\/dt>\n<dd><p>Please see the screenshots for instructions.<\/p><\/dd>\n<dt id=\"how%20do%20i%20fetch%20data%20on%20the%20front%20end%3F\"><h3>How do I fetch data on the front end?<\/h3><\/dt>\n<dd><p>From version 1.1.4, you can use pods_field(). For example, in a single post template, use pods_field( 'field_name' ) to fetch data for the current page. Otherwise, use pods_field( 'pods_name', 'post_id', 'field_name' ) to fetch data anywhere. To fetch data from the settings area, use pods_field( 'pods_name', false, 'field_name' ). To fetch data from the users area, use pods_field( 'user', 'user_id', 'field_name' ).<\/p>\n\n<p>You can use these filters to alter the repeater data returned from pods_field(): pandarf_pods_field_attrs( array(), $value_ukn, $row_arr, $params_arr, $pods_obj ) and pandarf_data_attrs( array(), $data_arr, $parent_pod_name ).<\/p>\n\n<p>From version 1.1.6, if the field type is \"file\", it returns the file IDs. You can then use WordPress APIs like get_attached_file(), wp_get_attachment_image_src(), etc. to get the file details. Relation types of 'user', 'post type', 'pod' and 'media' return the saved ID.<\/p>\n\n<p>You can also use this API to fetch data: pandarf_items_fn( $fields_arr, $attrs, $show_query ). Please see the Screenshots section for how to find IDs.<\/p>\n\n<p>Use $fields_arr to search the repeater field table: \narray(\n    'id' =&gt; '', \/\/ row ID\n    'name' =&gt; '', \/\/ the common name field used by Pods\n    'child_pod_name' =&gt; '', \/\/ repeater table name\n    'parent_pod_id' =&gt; '',\/\/ main table Pod ID\n    'parent_pod_post_id' =&gt; '', \/\/ main table post ID\n    'parent_pod_field_id' =&gt; '', \/\/ main table Panda Pods Repeater Field ID\n)<\/p>\n\n<p>$attrs supports some basic MySQL commands (optional):\narray(\n    'where' =&gt; '', \/\/ extra WHERE clause, expected to be escaped\n    'order' =&gt; 'ASC', \n    'order_by' =&gt; 'pandarf_order',\n    'group_by' =&gt; '', \n    'start' =&gt; 0,\n    'limit' =&gt; 0,\n    'count_only' =&gt; false, \/\/ if true, it will return the number of rows in an array.\n    'add_tb_prefix' =&gt; true, \/\/ add $table_prefix to the table name. Defaults to true\n)<\/p>\n\n<p>$show_query\nIf set to true, it will print the SQL command for debugging. Defaults to false.<\/p>\n\n<p>Basic usage example. The IDs are from the Screenshots section:\nget_pandarf_items( array( 'child_pod_name' =&gt; 'comic_item', 'parent_pod_id' =&gt; 2273, 'parent_pod_post_id' =&gt; 2275, 'parent_pod_field_id' =&gt; 2274 ) );\nUse pandarf_items_fn for versions before v1.4.11.<\/p>\n\n<p>This returns the Comic Contents items attached to the post.<\/p><\/dd>\n<dt id=\"how%20do%20i%20insert%20data%20on%20the%20front%20end%3F\"><h3>How do I insert data on the front end?<\/h3><\/dt>\n<dd><p>You can use this API to insert data: pandarf_insert( $fields_arr, $prf_arr, $show_query ). Please see the screenshots for how to find IDs.<\/p>\n\n<p>Use $fields_arr for extra fields other than Panda Repeater fields: \narray( \n    'field_name' =&gt; '', \n    'field_name' =&gt; '' \n    ... ...\n)\nUse $prf_arr for the default repeater fields:\narray(\n    'child_pod_name' =&gt; '', \/\/ The name of the table for saving repeater field items.\n    'parent_pod_id' =&gt; '', \/\/ main table Pod ID\n    'parent_pod_post_id' =&gt; '', \/\/ main table post ID\n    'parent_pod_field_id' =&gt; '', \/\/ main table Panda Pods Repeater Field ID\n    'user_id' =&gt; 0 \/\/ The author ID\n    'add_tb_prefix' =&gt; true, \/\/ add $table_prefix to the table name. Defaults to true\n)<\/p>\n\n<p>$show_query\nIf set to true, it will print the SQL command for debugging. Defaults to false.<\/p>\n\n<p>This API returns the inserted row ID if successful, or false on failure.<\/p>\n\n<p>Basic usage example. The IDs are from the Screenshots section:\n$id_int = pandarf_insert( array( 'name' =&gt; \"hello panda\" ), array( 'child_pod_name' =&gt; 'comic_item', 'parent_pod_id' =&gt; 2273, 'parent_pod_post_id' =&gt; 2275, 'parent_pod_field_id' =&gt; 2274, 'user_id' =&gt; $current_user-&gt;ID ) );<\/p>\n\n<p>\/**\n * The repeater field is only for logged-in users with the edit_posts capability \n * If you want it to be available to front-end users, you can use this filter\n *\n * @param  boolean $is_allowed Whether to allow the form to be displayed.\n * @param  array   $get_arr Variables from $_GET.\n * @return boolean Whether access is allowed.\n *\/\nfunction pprf_allow( $is_allowed, $get_arr ){<\/p>\n\n<pre><code>$pod_obj    =   pods('your_pod_slug');      \nif( $get_arr['podid'] == $pod_obj-&gt;pod_id ){\n    $is_allowed = true;\n}\nreturn  $is_allowed;\n<\/code><\/pre>\n\n<p>}<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20the%20css%20and%20javascript%20enqueued%20by%20the%20plugin%20on%20the%20front%20end%3F\"><h3>How do I remove the CSS and JavaScript enqueued by the plugin on the front end?<\/h3><\/dt>\n<dd><p>Add this code to your functions.php:<\/p>\n\n<p>add_action( 'wp_enqueue_scripts', 'dequeue_scripts_and_styles', 11 );<\/p>\n\n<p>function dequeue_scripts_and_styles() { \n    wp_dequeue_script( 'panda-pods-repeater-scripts' );<br \/>\n    wp_dequeue_style( 'panda-pods-repeater-general-styles' );\n    wp_dequeue_style( 'panda-pods-repeater-styles' );<br \/>\n}<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1 - 23rd September 2016<\/h4>\n\n<ul>\n<li>Added: A filter to display item titles.<\/li>\n<\/ul>\n\n<h4>1.0.2 - 30th September 2016<\/h4>\n\n<ul>\n<li>Added: Support for pandarf_items_fn to search ID and name fields.<\/li>\n<li>Added: A notice telling users to refresh pages after reordering.<\/li>\n<\/ul>\n\n<h4>1.0.3 - 5th October 2016<\/h4>\n\n<ul>\n<li>Added: Support for a custom WHERE query in pandarf_items_fn.<\/li>\n<\/ul>\n\n<h4>1.0.4 - 6th October 2016<\/h4>\n\n<ul>\n<li>Fixed: pandarf_parent_post_id now uses numbers only; previously it used a string.<\/li>\n<\/ul>\n\n<h4>1.0.5 - 14th October 2016<\/h4>\n\n<ul>\n<li>Fixed: Ordering for newly added items.<\/li>\n<\/ul>\n\n<h4>1.0.6 - 21st October 2016<\/h4>\n\n<ul>\n<li>Fixed: An issue on the user profile page.<\/li>\n<\/ul>\n\n<h4>1.0.7 - 28th October 2016<\/h4>\n\n<ul>\n<li>Fixed: An issue when using the plugin within Advanced Content Types.<\/li>\n<\/ul>\n\n<h4>1.0.8 - 2nd November 2016<\/h4>\n\n<ul>\n<li>Fixed: Ordering by pandarf_order on the front end by casting the string as a number.<\/li>\n<\/ul>\n\n<h4>1.0.9 - 2nd November 2016<\/h4>\n\n<ul>\n<li>Changed: Time format from h:i:s to H:i:s.<\/li>\n<\/ul>\n\n<h4>1.1.0 - 1st December 2016<\/h4>\n\n<ul>\n<li>Added: The add_tb_prefix parameter to the pandarf_items_fn() and pandarf_insert APIs so they can be used for all tables.<\/li>\n<li>Added: The pods_post_delete() action to pods_api_post_delete_pod_item.<\/li>\n<li>Added: The pprf_action_pods_post_delete() action to pods_post_delete.<\/li>\n<li>Added: The pprf_filter_pods_post_delete() filter to pods_api_post_delete_pod_item.<\/li>\n<li>Added: The pprf_action_pods_post_save() action to pods_post_save.<\/li>\n<li>Added: The pprf_filter_pods_post_save() filter to pods_api_post_delete_pod_item.<\/li>\n<li>Added: Auto-expanding when adding and editing an item.<\/li>\n<li>Updated: The interface.<\/li>\n<\/ul>\n\n<h4>1.1.1 - 4th March 2017<\/h4>\n\n<ul>\n<li>Fixed: An issue where, after deleting an item, the label still stayed.<\/li>\n<li>Updated: The interface.<\/li>\n<\/ul>\n\n<h4>1.1.2 - 22nd April 2017<\/h4>\n\n<ul>\n<li>Added: New close and expand bars on the top and bottom.<\/li>\n<li>Changed: Moved the delete button from the iframe to the parent window.<\/li>\n<li>Changed: Simplified reordering.<\/li>\n<\/ul>\n\n<h4>1.1.3 - 13th May 2017<\/h4>\n\n<ul>\n<li>Added: A Save button on the bar.<\/li>\n<li>Fixed: Inserting pandarf_order on the front end by casting the string as a number.<\/li>\n<li>Removed: The add_action( 'save_post', array( $tableAsRepeater_cla, 'update_child_pod' ), 10, 3 ) call, which is no longer needed.<\/li>\n<\/ul>\n\n<h4>1.1.4 - 29th June 2017<\/h4>\n\n<ul>\n<li>Added: The is_pandarf_fn( $fieldName_str ) API to check if a field is a Panda Pods Repeater Field.<\/li>\n<li>Added: The pandarf_get_data( $data_arr, $parent_pod_name ) API to fetch repeater data for a data row from a database table.<\/li>\n<li>Added: Integration with pods_field().<\/li>\n<\/ul>\n\n<h4>1.1.5 - 9th July 2017<\/h4>\n\n<ul>\n<li>Fixed: An issue where a newly created item fetched data from other parent posts when using pods_field.<\/li>\n<\/ul>\n\n<h4>1.1.6 - 5th August 2017<\/h4>\n\n<ul>\n<li>Added: Returning file and user IDs for relation types of 'user', 'post type', 'pod' and 'media'.<\/li>\n<li>Added: Support for limiting the number of entries.<\/li>\n<\/ul>\n\n<h4>1.1.7 - 19th August 2017<\/h4>\n\n<ul>\n<li>Fixed: An issue where the \"Add New\" button disappeared if the number of entries was set to 0.<\/li>\n<\/ul>\n\n<h4>1.1.8 - 15th October 2017<\/h4>\n\n<ul>\n<li>Changed: The plugin now uses pods_register_field_type() to register Panda Pods Repeater Field.<\/li>\n<li>Fixed: Some styling issues.<\/li>\n<li>Fixed: The Pods relationship field ordering issue.<\/li>\n<li>Added: Alerts when changes are not saved.<\/li>\n<\/ul>\n\n<h4>1.1.9 - 22nd October 2017<\/h4>\n\n<ul>\n<li>Fixed: An issue where expanding and collapsing called pprf_resize_window() too many times, sometimes before the iframe was ready.<\/li>\n<li>Added: The ability to move items to Trash and restore them from Trash.<\/li>\n<\/ul>\n\n<h4>1.2.0 - 17th December 2017<\/h4>\n\n<ul>\n<li>Changed: The plugin now saves the table post_name instead of ID to solve migration issues. This will not affect saved data, but you will need to update the field in Pods and choose the correct table again to migrate properly.<\/li>\n<li>Fixed: An issue where using the same field name in two tables did not return the right data.<\/li>\n<\/ul>\n\n<h4>1.2.1 - 5th March 2018<\/h4>\n\n<ul>\n<li>Security: Enhanced AJAX security.<\/li>\n<li>Added: Support for front-end Pods forms.<\/li>\n<li>Fixed: Newly added items could only be deleted, not moved to Trash.<\/li>\n<\/ul>\n\n<h4>1.3.0 - 27th July 2018<\/h4>\n\n<ul>\n<li>Added: Load More functionality.<\/li>\n<li>Added: Order options.<\/li>\n<li>Updated: Reordering now updates colours.<\/li>\n<li>Changed: Some code according to Pods official reviews.<\/li>\n<\/ul>\n\n<h4>1.3.1 - 19th August 2018<\/h4>\n\n<ul>\n<li>Changed: Drag-and-drop tolerance from \"pointer\" to \"intersect\".<\/li>\n<li>Fixed: An issue where only ten items were loaded when Enable Load More was set to No.<\/li>\n<\/ul>\n\n<h4>1.3.2 - 23rd September 2018<\/h4>\n\n<ul>\n<li>Fixed: The date field display issue.<\/li>\n<\/ul>\n\n<h4>1.3.3 - 29th October 2018<\/h4>\n\n<ul>\n<li>Fixed: pods-&gt;delete() did not work reliably, so a $wpdb query is used for now.<\/li>\n<\/ul>\n\n<h4>1.3.4 - 3rd November 2018<\/h4>\n\n<ul>\n<li>Fixed: An issue with pods-&gt;delete().<\/li>\n<li>Added: Support for using Admin Table Columns for labels.<\/li>\n<\/ul>\n\n<h4>1.3.5 - 18th November 2018<\/h4>\n\n<ul>\n<li>Fixed: An issue where pandarf_items_fn did not respond when the order field was changed.<\/li>\n<li>Fixed: A typo.<\/li>\n<\/ul>\n\n<h4>1.3.6 - 19th November 2018<\/h4>\n\n<ul>\n<li>Fixed: An issue where an empty order field loaded data in descending order.<\/li>\n<li>Changed: Adjusted some icons' padding and margin.<\/li>\n<\/ul>\n\n<h4>1.3.7 - 9th December 2018<\/h4>\n\n<ul>\n<li>Fixed: An issue where pods_field() did not fetch data in AJAX.<\/li>\n<\/ul>\n\n<h4>1.3.8 - 10th March 2019<\/h4>\n\n<ul>\n<li>Updated: Optimised some code.<\/li>\n<li>Added: The ability to reassign an item to another parent field using the same child table.<\/li>\n<\/ul>\n\n<h4>1.4.0 - 24th March 2019<\/h4>\n\n<ul>\n<li>Changed: How a repeater field is rendered so it can be displayed on the front end for non-logged-in users.<\/li>\n<li>Changed: Filter names from \"pprf_load_panda_repeater_allow\" to \"pprf_load_panda_repeater_allow_input\" and from \"pprf_load_panda_repeater_allow_msg\" to \"pprf_load_panda_repeater_allow_input_msg\".<\/li>\n<li>Changed: JavaScript from 'live' to 'on'.<\/li>\n<li>Added: The ability to allow selected user roles to access the field.<\/li>\n<li>Fixed: An issue where the field opened and closed immediately on mobile.<\/li>\n<\/ul>\n\n<h4>1.4.1 - 20th April 2019<\/h4>\n\n<ul>\n<li>Changed: Made JavaScript alerts translatable.<\/li>\n<li>Added: Chinese language support.<\/li>\n<li>Fixed: An error when a Pods table did not exist.<\/li>\n<li>Fixed: An error on multisite.<\/li>\n<li>Fixed: An error when a repeater field is a custom post type, although using a custom post type as a repeater field is not part of the plan.<\/li>\n<\/ul>\n\n<h4>1.4.2 - 27th May 2019<\/h4>\n\n<ul>\n<li>Added: The pandarf_pods_field_fields filter.<\/li>\n<\/ul>\n\n<h4>1.4.3 - 22nd June 2019<\/h4>\n\n<ul>\n<li>Added: Locked down the font size in the form so it will not be affected by the theme.<\/li>\n<li>Changed: $pods_obj-&gt;id to $pods_obj-&gt;id() in pandarf_pods_field() to fix an issue in the REST API.<\/li>\n<\/ul>\n\n<h4>1.4.4 - 22nd September 2019<\/h4>\n\n<ul>\n<li>Fixed: TypeError: Backbone.Marionette is undefined.<\/li>\n<li>Fixed: $(...).live is not a function error using jQuery.<\/li>\n<\/ul>\n\n<h4>1.4.5 - 2nd November 2019<\/h4>\n\n<ul>\n<li>Added: Code to add the relationship fields if they are missing. This is useful for migrating repeater fields or creating them with code.<\/li>\n<li>Fixed: The \"$ is not a function\" issue when clicking the Load button.<\/li>\n<li>Changed: The window now resizes after running all JavaScript.<\/li>\n<\/ul>\n\n<h4>1.4.6 - 4th February 2020<\/h4>\n\n<ul>\n<li>Fixed: An issue where the trash, save, and edit buttons had to be clicked twice on mobile before they worked.<\/li>\n<li>Added: Styling for the Load More div.<\/li>\n<li>Added: Integration with Simpods Area Field.<\/li>\n<li>Security: Removed all tags from label outputs and limited label text to 80 characters. If a label contains images, videos, audio, or shortcodes, relevant icons are displayed.<\/li>\n<\/ul>\n\n<h4>1.4.7 - 29th July 2020<\/h4>\n\n<ul>\n<li>Fixed: An issue where the database class was not included in the pandarf_items_fn function.<\/li>\n<\/ul>\n\n<h4>1.4.8 - 9th December 2020<\/h4>\n\n<ul>\n<li>Updated: Simpods Area Field integration for Simpods 3.0.0.<\/li>\n<li>Added: Minified CSS and JavaScript files.<\/li>\n<li>Added: The load_pprf_scripts_frontend filter to toggle loading PPRF scripts and styles on the front end.<\/li>\n<li>Added: More front-end CSS.<\/li>\n<li>Updated: JavaScript for the WordPress 5.6 update.<\/li>\n<\/ul>\n\n<h4>1.4.9 - 7th March 2021<\/h4>\n\n<ul>\n<li>Changed: index.php is now used for pandarepeaterfield.php.<\/li>\n<li>Changed: click() to trigger('click').<\/li>\n<li>Changed: Reassign now also works for parent tables with meta storage type.<\/li>\n<li>Updated: wp_localize_script handling for WordPress 5.7.<\/li>\n<li>Updated: Support for Pods 2.8, which uses parent instead of pod_id.<\/li>\n<li>Fixed: A bug in the order query.<\/li>\n<\/ul>\n\n<h4>1.4.10 - 30th March 2021<\/h4>\n\n<ul>\n<li>Added: When displaying labels with admin columns, simple relationships now display labels instead of values.<\/li>\n<li>Fixed: A bug when using PHP 8.<\/li>\n<\/ul>\n\n<h4>1.4.11 - 21st October 2021<\/h4>\n\n<ul>\n<li>Updated: Compatibility with Pods 2.8.<\/li>\n<\/ul>\n\n<h4>1.5.0 - 21st October 2021<\/h4>\n\n<ul>\n<li>Changed: Removed _fn suffixes in function names and updated many variable names to match WordPress coding standards.<\/li>\n<li>Fixed: An issue where a pod_index exists in the postmeta table but is not used as a field in the pod table.<\/li>\n<li>Added: Use of the simpods_tables cache if available, to avoid duplicate queries.<\/li>\n<li>Added: WordPress cache usage for checking if a field is a Panda Pods Repeater Field.<\/li>\n<li>Added: When a new entry is added, it will use the admin columns if required.<\/li>\n<\/ul>\n\n<h4>1.5.1 - 12th February 2022<\/h4>\n\n<ul>\n<li>Fixed: The sorting issue caused by WordPress 5.9.<\/li>\n<\/ul>\n\n<h4>1.5.2 - 26th March 2022<\/h4>\n\n<ul>\n<li>Fixed: The sorting issue in settings caused by WordPress 5.9.<\/li>\n<li>Fixed: An issue where pandarf_insert could not insert files.<\/li>\n<li>Fixed: The integration issue after Pods 2.8.<\/li>\n<li>Fixed: An issue where the \"Please save the parent first\" message stopped appearing.<\/li>\n<li>Fixed: An issue where the child pod became available when the parent was not saved.<\/li>\n<li>Fixed: An issue where a newly added item could not display admin columns.<\/li>\n<\/ul>\n\n<h4>1.5.3 - 4th December 2022<\/h4>\n\n<ul>\n<li>Added: The pprf_parent_filter_conditions() filter to filter the parent dropdown for reassignment and duplication.<\/li>\n<li>Added: Duplication functionality.<\/li>\n<li>Added: Functionality to delete item descendants when a parent item is deleted.<\/li>\n<li>Added: A constant to toggle deleting item descendants, so users see the reminder to create backups before using it.<\/li>\n<li>Added: IDs to the parents dropdown list.<\/li>\n<\/ul>\n\n<h4>1.5.4 - 6th December 2022<\/h4>\n\n<ul>\n<li>Updated: Applied coding standards.<\/li>\n<\/ul>\n\n<h4>1.5.5 - 22nd December 2022<\/h4>\n\n<ul>\n<li>Updated: Applied more coding standards.<\/li>\n<\/ul>\n\n<h4>1.5.6 - 23rd December 2022<\/h4>\n\n<ul>\n<li>Updated: Applied more coding standards.<\/li>\n<\/ul>\n\n<h4>1.5.7 - 23rd December 2022<\/h4>\n\n<ul>\n<li>Updated: Applied more coding standards.<\/li>\n<\/ul>\n\n<h4>1.5.8 - 29th December 2022<\/h4>\n\n<ul>\n<li>Removed: Front-end access.<\/li>\n<\/ul>\n\n<h4>1.5.9 - 29th December 2022<\/h4>\n\n<ul>\n<li>Updated: Re-organised the positions of some code.<\/li>\n<\/ul>\n\n<h4>1.5.10 - 12th February 2023<\/h4>\n\n<ul>\n<li>Fixed: An issue where custom database fields were not created after Pods 2.7.<\/li>\n<\/ul>\n\n<h4>1.5.11 - 30th April 2023<\/h4>\n\n<ul>\n<li>Fixed: An issue where items were also fetched from Trash.<\/li>\n<li>Updated: Removed the instructions for using the repeater form on the front end.<\/li>\n<\/ul>\n\n<h4>1.5.12 - 8th April 2024<\/h4>\n\n<ul>\n<li>Fixed: An issue where the repeater field table was saved as 0 when there was only one.<\/li>\n<\/ul>\n\n<h4>1.5.13 - 21st May 2026<\/h4>\n\n<ul>\n<li>Security: Removed unauthenticated AJAX endpoints and added capability checks to repeater AJAX actions.<\/li>\n<li>Security: Hardened dynamic SQL table and field identifiers used by Pods repeater queries.<\/li>\n<li>Updated: Confirmed compatibility with WordPress 7.0 and updated the tested release metadata.<\/li>\n<li>Updated: Raised the plugin PHP requirement to PHP 7.4+ to match the WordPress 7.0 minimum while keeping PHP 8.x compatibility.<\/li>\n<li>Fixed: Corrected a gmdate() typo in pandarf_insert().<\/li>\n<\/ul>\n\n<h4>1.5.14 - 2nd June 2026<\/h4>\n\n<ul>\n<li>Fixed: Allowed hyphenated Pods\/Panda repeater table identifiers, such as multi-choice, while continuing to reject unsafe SQL identifier characters.<\/li>\n<li>Updated: Confirmed compatibility with Pods 3.3.9.<\/li>\n<\/ul>","raw_excerpt":"Repeater fields for the Pods Framework. Add repeatable fields to pages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/51668","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=51668"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/codingpanda"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=51668"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=51668"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=51668"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=51668"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=51668"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=51668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}