├── .github
└── workflows
│ ├── e2e.yml
│ ├── phpcs.yml
│ ├── phpstan.yml
│ └── phpunit.yml
├── .gitignore
├── .husky
├── pre-commit
└── pre-commit-phpcbf.sh
├── .markdownlint.json
├── .nvmrc
├── .phpcs.xml.dist
├── .prettierrc.js
├── .wordpress-org
├── banner-1544x500.jpg
├── banner-772x250.jpg
├── blueprints
│ └── blueprint.json
├── icon-128x128.png
├── icon-256x256.png
├── icon.svg
├── screenshot-1.png
├── screenshot-2.png
├── screenshot-3.png
└── screenshot-4.png
├── .wp-env.json
├── README.md
├── SECURITY.md
├── acf.php
├── assets
├── build
│ ├── css
│ │ ├── index.php
│ │ └── pro
│ │ │ └── index.php
│ ├── index.php
│ └── js
│ │ ├── index.php
│ │ └── pro
│ │ └── index.php
├── images
│ ├── empty-group.svg
│ ├── empty-post-types.svg
│ ├── empty-taxonomies.svg
│ ├── face-sad.svg
│ ├── field-preview-grid.png
│ ├── field-states
│ │ ├── checkbox-active.svg
│ │ ├── checkbox-indeterminate.svg
│ │ ├── index.php
│ │ └── radio-active.svg
│ ├── field-type-icons
│ │ ├── icon-field-accordion.svg
│ │ ├── icon-field-button-group.svg
│ │ ├── icon-field-checkbox.svg
│ │ ├── icon-field-clone.svg
│ │ ├── icon-field-color-picker.svg
│ │ ├── icon-field-date-picker.svg
│ │ ├── icon-field-date-time-picker.svg
│ │ ├── icon-field-default.svg
│ │ ├── icon-field-email.svg
│ │ ├── icon-field-file.svg
│ │ ├── icon-field-flexible-content.svg
│ │ ├── icon-field-gallery.svg
│ │ ├── icon-field-google-map.svg
│ │ ├── icon-field-group.svg
│ │ ├── icon-field-icon-picker.svg
│ │ ├── icon-field-image.svg
│ │ ├── icon-field-link.svg
│ │ ├── icon-field-message.svg
│ │ ├── icon-field-number.svg
│ │ ├── icon-field-oembed.svg
│ │ ├── icon-field-page-link.svg
│ │ ├── icon-field-password.svg
│ │ ├── icon-field-post-object.svg
│ │ ├── icon-field-radio.svg
│ │ ├── icon-field-range.svg
│ │ ├── icon-field-relationship.svg
│ │ ├── icon-field-repeater.svg
│ │ ├── icon-field-select.svg
│ │ ├── icon-field-tab.svg
│ │ ├── icon-field-taxonomy.svg
│ │ ├── icon-field-text.svg
│ │ ├── icon-field-textarea.svg
│ │ ├── icon-field-time-picker.svg
│ │ ├── icon-field-true-false.svg
│ │ ├── icon-field-url.svg
│ │ ├── icon-field-user.svg
│ │ ├── icon-field-wysiwyg.svg
│ │ └── index.php
│ ├── field-type-previews
│ │ ├── field-preview-accordion.png
│ │ ├── field-preview-button-group.png
│ │ ├── field-preview-checkbox.png
│ │ ├── field-preview-clone.png
│ │ ├── field-preview-color-picker.png
│ │ ├── field-preview-date-picker.png
│ │ ├── field-preview-date-time.png
│ │ ├── field-preview-email.png
│ │ ├── field-preview-file.png
│ │ ├── field-preview-flexible-content.png
│ │ ├── field-preview-gallery.png
│ │ ├── field-preview-google-map.png
│ │ ├── field-preview-group.png
│ │ ├── field-preview-icon-picker.png
│ │ ├── field-preview-image.png
│ │ ├── field-preview-link.png
│ │ ├── field-preview-message.png
│ │ ├── field-preview-number.png
│ │ ├── field-preview-oembed.png
│ │ ├── field-preview-page-link.png
│ │ ├── field-preview-password.png
│ │ ├── field-preview-post-object.png
│ │ ├── field-preview-radio-button.png
│ │ ├── field-preview-range.png
│ │ ├── field-preview-relationship.png
│ │ ├── field-preview-repeater.png
│ │ ├── field-preview-select.png
│ │ ├── field-preview-tabs.png
│ │ ├── field-preview-taxonomy.png
│ │ ├── field-preview-text.png
│ │ ├── field-preview-textarea.png
│ │ ├── field-preview-time.png
│ │ ├── field-preview-true-false.png
│ │ ├── field-preview-url.png
│ │ ├── field-preview-user.png
│ │ ├── field-preview-wysiwyg.png
│ │ └── index.php
│ ├── icons
│ │ ├── icon-add.svg
│ │ ├── icon-alert-triangle.svg
│ │ ├── icon-arrow-left.svg
│ │ ├── icon-arrow-right.svg
│ │ ├── icon-arrow-up-right.svg
│ │ ├── icon-check-circle-solid.svg
│ │ ├── icon-check.svg
│ │ ├── icon-chevron-down.svg
│ │ ├── icon-chevron-left-double.svg
│ │ ├── icon-chevron-left.svg
│ │ ├── icon-chevron-right-double.svg
│ │ ├── icon-chevron-right.svg
│ │ ├── icon-chevron-up.svg
│ │ ├── icon-close-circle.svg
│ │ ├── icon-close.svg
│ │ ├── icon-copy.svg
│ │ ├── icon-document.svg
│ │ ├── icon-dots-grid.svg
│ │ ├── icon-draggable.svg
│ │ ├── icon-export.svg
│ │ ├── icon-extended-menu.svg
│ │ ├── icon-field-groups.svg
│ │ ├── icon-fields.svg
│ │ ├── icon-globe.svg
│ │ ├── icon-help.svg
│ │ ├── icon-hidden.svg
│ │ ├── icon-import.svg
│ │ ├── icon-info-red.svg
│ │ ├── icon-info-solid.svg
│ │ ├── icon-info-white.svg
│ │ ├── icon-info.svg
│ │ ├── icon-key-solid.svg
│ │ ├── icon-layout.svg
│ │ ├── icon-lock.svg
│ │ ├── icon-play.svg
│ │ ├── icon-post-type.svg
│ │ ├── icon-regenerate.svg
│ │ ├── icon-search.svg
│ │ ├── icon-settings.svg
│ │ ├── icon-sliders.svg
│ │ ├── icon-stars.svg
│ │ ├── icon-taxonomies.svg
│ │ ├── icon-time.svg
│ │ ├── icon-tools.svg
│ │ ├── icon-trash.svg
│ │ ├── icon-updates.svg
│ │ ├── icon-warning-alt-red.svg
│ │ ├── icon-warning-alt.svg
│ │ ├── icon-warning.svg
│ │ └── index.php
│ ├── index.php
│ ├── scf-logo.svg
│ ├── spinner
│ └── spinner.gif
├── inc
│ ├── color-picker-alpha
│ │ ├── index.php
│ │ ├── wp-color-picker-alpha.js
│ │ └── wp-color-picker-alpha.min.js
│ ├── datepicker
│ │ ├── images
│ │ │ ├── index.php
│ │ │ ├── ui-bg_highlight-soft_0_ffffff_1x100.png
│ │ │ ├── ui-icons_444444_256x240.png
│ │ │ ├── ui-icons_DDDDDD_256x240.png
│ │ │ └── ui-icons_ffffff_256x240.png
│ │ ├── index.php
│ │ ├── jquery-ui.css
│ │ └── jquery-ui.min.css
│ ├── index.php
│ ├── select2
│ │ ├── 3
│ │ │ ├── index.php
│ │ │ ├── select2-spinner.gif
│ │ │ ├── select2.css
│ │ │ ├── select2.js
│ │ │ ├── select2.min.js
│ │ │ ├── select2.png
│ │ │ └── select2x2.png
│ │ ├── 4
│ │ │ ├── index.php
│ │ │ ├── select2.css
│ │ │ ├── select2.full.js
│ │ │ ├── select2.full.min.js
│ │ │ ├── select2.js
│ │ │ ├── select2.min.css
│ │ │ └── select2.min.js
│ │ └── index.php
│ └── timepicker
│ │ ├── index.php
│ │ ├── jquery-ui-timepicker-addon.css
│ │ ├── jquery-ui-timepicker-addon.js
│ │ ├── jquery-ui-timepicker-addon.min.css
│ │ └── jquery-ui-timepicker-addon.min.js
└── src
│ ├── js
│ ├── _acf-compatibility.js
│ ├── _acf-condition-types.js
│ ├── _acf-condition.js
│ ├── _acf-conditions.js
│ ├── _acf-field-accordion.js
│ ├── _acf-field-button-group.js
│ ├── _acf-field-checkbox.js
│ ├── _acf-field-color-picker.js
│ ├── _acf-field-date-picker.js
│ ├── _acf-field-date-time-picker.js
│ ├── _acf-field-file.js
│ ├── _acf-field-google-map.js
│ ├── _acf-field-icon-picker.js
│ ├── _acf-field-image.js
│ ├── _acf-field-link.js
│ ├── _acf-field-oembed.js
│ ├── _acf-field-page-link.js
│ ├── _acf-field-post-object.js
│ ├── _acf-field-radio.js
│ ├── _acf-field-range.js
│ ├── _acf-field-relationship.js
│ ├── _acf-field-select.js
│ ├── _acf-field-tab.js
│ ├── _acf-field-taxonomy.js
│ ├── _acf-field-time-picker.js
│ ├── _acf-field-true-false.js
│ ├── _acf-field-url.js
│ ├── _acf-field-user.js
│ ├── _acf-field-wysiwyg.js
│ ├── _acf-field.js
│ ├── _acf-fields.js
│ ├── _acf-helpers.js
│ ├── _acf-hooks.js
│ ├── _acf-internal-post-type.js
│ ├── _acf-media.js
│ ├── _acf-modal.js
│ ├── _acf-model.js
│ ├── _acf-notice.js
│ ├── _acf-panel.js
│ ├── _acf-popup.js
│ ├── _acf-postbox.js
│ ├── _acf-screen.js
│ ├── _acf-select2.js
│ ├── _acf-tinymce.js
│ ├── _acf-tooltip.js
│ ├── _acf-unload.js
│ ├── _acf-validation.js
│ ├── _acf.js
│ ├── _browse-fields-modal.js
│ ├── _field-group-compatibility.js
│ ├── _field-group-conditions.js
│ ├── _field-group-field.js
│ ├── _field-group-fields.js
│ ├── _field-group-locations.js
│ ├── _field-group-settings.js
│ ├── _field-group.js
│ ├── acf-escaped-html-notice.js
│ ├── acf-field-group.js
│ ├── acf-input.js
│ ├── acf-internal-post-type.js
│ ├── acf.js
│ ├── commands
│ │ ├── admin-commands.js
│ │ └── custom-post-type-commands.js
│ └── pro
│ │ ├── _acf-blocks.js
│ │ ├── _acf-field-flexible-content.js
│ │ ├── _acf-field-gallery.js
│ │ ├── _acf-field-repeater.js
│ │ ├── _acf-jsx-names.js
│ │ ├── _acf-setting-clone.js
│ │ ├── _acf-setting-flexible-content.js
│ │ ├── _acf-setting-repeater.js
│ │ ├── _acf-ui-options-page.js
│ │ ├── acf-pro-blocks.js
│ │ ├── acf-pro-field-group.js
│ │ ├── acf-pro-input.js
│ │ └── acf-pro-ui-options-page.js
│ └── sass
│ ├── _acf-headerbar.scss
│ ├── _acf-icon-picker.scss
│ ├── _admin-inputs.scss
│ ├── _admin-toolbar.scss
│ ├── _btn.scss
│ ├── _dark.scss
│ ├── _edit-field-group.scss
│ ├── _field-group.scss
│ ├── _field-picker.scss
│ ├── _field-type-icons.scss
│ ├── _fields.scss
│ ├── _forms.scss
│ ├── _global.scss
│ ├── _icons.scss
│ ├── _input.scss
│ ├── _list-table.scss
│ ├── _media.scss
│ ├── _mixins.scss
│ ├── _post-types-taxonomies.scss
│ ├── _postbox.scss
│ ├── _pro-upgrade.scss
│ ├── _sub-field-groups.scss
│ ├── _tools.scss
│ ├── _typography.scss
│ ├── _updates.scss
│ ├── _variables.scss
│ ├── acf-dark.scss
│ ├── acf-field-group.scss
│ ├── acf-global.scss
│ ├── acf-input.scss
│ └── pro
│ ├── _blocks.scss
│ ├── _field-group.scss
│ ├── _fields.scss
│ ├── acf-pro-field-group.scss
│ └── acf-pro-input.scss
├── bin
├── baseline.neon
├── phpstan-bootstrap.php
├── prepare-release.php
└── update-translations.php
├── composer.json
├── composer.lock
├── docs
├── bin
│ ├── generate-manifest.php
│ ├── generate-parsed-md.php
│ ├── manifest.json
│ └── update-markdown-links.php
├── code-reference
│ ├── META.md
│ ├── acf-bidirectional-functions-file.md
│ ├── acf-field-functions-file.md
│ ├── acf-field-group-functions-file.md
│ ├── acf-form-functions-file.md
│ ├── acf-helper-functions-file.md
│ ├── acf-hook-functions-file.md
│ ├── acf-input-functions-file.md
│ ├── acf-internal-post-type-functions-file.md
│ ├── acf-meta-functions-file.md
│ ├── acf-post-functions-file.md
│ ├── acf-post-type-functions-file.md
│ ├── acf-taxonomy-functions-file.md
│ ├── acf-user-functions-file.md
│ ├── acf-utility-functions-file.md
│ ├── acf-value-functions-file.md
│ ├── acf-wp-functions-file.md
│ ├── admin
│ │ ├── admin-notices-file.md
│ │ ├── admin-tools-file.md
│ │ ├── index.md
│ │ └── views
│ │ │ └── global
│ │ │ ├── index.md
│ │ │ └── navigation-file.md
│ ├── api
│ │ ├── api-helpers-file.md
│ │ ├── api-template-file.md
│ │ ├── api-term-file.md
│ │ └── index.md
│ ├── assets-file.md
│ ├── blocks-file.md
│ ├── compatibility-file.md
│ ├── deprecated-file.md
│ ├── fields-file.md
│ ├── fields
│ │ ├── class-acf-repeater-table-file.md
│ │ └── index.md
│ ├── forms
│ │ ├── form-front-file.md
│ │ └── index.md
│ ├── hooks
│ │ └── index.md
│ ├── index.md
│ ├── l10n-file.md
│ ├── local-fields-file.md
│ ├── local-json-file.md
│ ├── local-meta-file.md
│ ├── locations-file.md
│ ├── loop-file.md
│ ├── rest-api
│ │ ├── acf-rest-api-functions-file.md
│ │ ├── class-acf-rest-api-file.md
│ │ ├── class-acf-rest-embed-links-file.md
│ │ ├── class-acf-rest-request-file.md
│ │ └── index.md
│ ├── revisions-file.md
│ ├── scf-ui-options-page-functions-file.md
│ ├── upgrades-file.md
│ └── validation-file.md
├── concepts
│ ├── architecture.md
│ ├── index.md
│ └── security.md
├── contributing
│ ├── documentation.md
│ └── index.md
├── features
│ ├── field
│ │ ├── META.md
│ │ ├── accordion
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── button-group
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── checkbox
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── clone
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── color-picker
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── date-picker
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── date-time-picker
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── email
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── file
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── flexible-content
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── gallery
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── google-map
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── group
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── icon-picker
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── image
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── index.md
│ │ ├── link
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── message
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── nav_menu
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── number
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── oembed
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── page-link
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── password
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── post-object
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── radio
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── range
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── repeater
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── select
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── separator
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── tab
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── taxonomy
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── text
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── textarea
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── time-picker
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── true-false
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── url
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ ├── user
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ │ └── wysiwyg
│ │ │ ├── index.md
│ │ │ └── tutorial.md
│ ├── index.md
│ ├── post-types.md
│ └── scf-api.md
├── tutorials
│ ├── first-post-type.md
│ └── index.md
└── welcome
│ ├── index.md
│ ├── installation.md
│ └── quick-start.md
├── includes
├── Blocks
│ └── Bindings.php
├── Meta
│ ├── Comment.php
│ ├── MetaLocation.php
│ ├── Option.php
│ ├── Post.php
│ ├── Term.php
│ ├── User.php
│ └── WooOrder.php
├── acf-bidirectional-functions.php
├── acf-field-functions.php
├── acf-field-group-functions.php
├── acf-form-functions.php
├── acf-helper-functions.php
├── acf-hook-functions.php
├── acf-input-functions.php
├── acf-internal-post-type-functions.php
├── acf-meta-functions.php
├── acf-post-functions.php
├── acf-post-type-functions.php
├── acf-taxonomy-functions.php
├── acf-user-functions.php
├── acf-utility-functions.php
├── acf-value-functions.php
├── acf-wp-functions.php
├── admin
│ ├── admin-commands.php
│ ├── admin-internal-post-type-list.php
│ ├── admin-internal-post-type.php
│ ├── admin-notices.php
│ ├── admin-tools.php
│ ├── admin-upgrade.php
│ ├── admin.php
│ ├── beta-features.php
│ ├── beta-features
│ │ ├── class-scf-beta-feature-editor-sidebar.php
│ │ ├── class-scf-beta-feature.php
│ │ └── index.php
│ ├── class-acf-admin-options-page.php
│ ├── index.php
│ ├── post-types
│ │ ├── admin-field-group.php
│ │ ├── admin-field-groups.php
│ │ ├── admin-post-type.php
│ │ ├── admin-post-types.php
│ │ ├── admin-taxonomies.php
│ │ ├── admin-taxonomy.php
│ │ ├── class-acf-admin-ui-options-page.php
│ │ ├── class-acf-admin-ui-options-pages.php
│ │ └── index.php
│ ├── tools
│ │ ├── class-acf-admin-tool-export.php
│ │ ├── class-acf-admin-tool-import.php
│ │ ├── class-acf-admin-tool.php
│ │ └── index.php
│ └── views
│ │ ├── acf-field-group
│ │ ├── conditional-logic.php
│ │ ├── field.php
│ │ ├── fields.php
│ │ ├── index.php
│ │ ├── list-empty.php
│ │ ├── location-group.php
│ │ ├── location-rule.php
│ │ ├── locations.php
│ │ └── options.php
│ │ ├── acf-post-type
│ │ ├── advanced-settings.php
│ │ ├── basic-settings.php
│ │ ├── index.php
│ │ └── list-empty.php
│ │ ├── acf-taxonomy
│ │ ├── advanced-settings.php
│ │ ├── basic-settings.php
│ │ ├── index.php
│ │ └── list-empty.php
│ │ ├── acf-ui-options-page
│ │ ├── advanced-settings.php
│ │ ├── basic-settings.php
│ │ ├── create-options-page-modal.php
│ │ └── list-empty.php
│ │ ├── beta-features
│ │ └── beta-features.php
│ │ ├── browse-fields-modal.php
│ │ ├── escaped-html-notice.php
│ │ ├── global
│ │ ├── form-top.php
│ │ ├── header.php
│ │ ├── index.php
│ │ └── navigation.php
│ │ ├── html-options-page.php
│ │ ├── index.php
│ │ ├── tools
│ │ ├── index.php
│ │ └── tools.php
│ │ └── upgrade
│ │ ├── index.php
│ │ ├── network.php
│ │ ├── notice.php
│ │ └── upgrade.php
├── ajax
│ ├── class-acf-ajax-check-screen.php
│ ├── class-acf-ajax-local-json-diff.php
│ ├── class-acf-ajax-query-users.php
│ ├── class-acf-ajax-query.php
│ ├── class-acf-ajax-upgrade.php
│ ├── class-acf-ajax-user-setting.php
│ ├── class-acf-ajax.php
│ └── index.php
├── api
│ ├── api-helpers.php
│ ├── api-template.php
│ ├── api-term.php
│ └── index.php
├── assets.php
├── blocks.php
├── class-acf-data.php
├── class-acf-internal-post-type.php
├── class-acf-options-page.php
├── class-acf-site-health.php
├── compatibility.php
├── deprecated.php
├── fields.php
├── fields
│ ├── class-acf-field-accordion.php
│ ├── class-acf-field-button-group.php
│ ├── class-acf-field-checkbox.php
│ ├── class-acf-field-clone.php
│ ├── class-acf-field-color_picker.php
│ ├── class-acf-field-date_picker.php
│ ├── class-acf-field-date_time_picker.php
│ ├── class-acf-field-email.php
│ ├── class-acf-field-file.php
│ ├── class-acf-field-flexible-content.php
│ ├── class-acf-field-gallery.php
│ ├── class-acf-field-google-map.php
│ ├── class-acf-field-group.php
│ ├── class-acf-field-icon_picker.php
│ ├── class-acf-field-image.php
│ ├── class-acf-field-link.php
│ ├── class-acf-field-message.php
│ ├── class-acf-field-nav-menu.php
│ ├── class-acf-field-number.php
│ ├── class-acf-field-oembed.php
│ ├── class-acf-field-output.php
│ ├── class-acf-field-page_link.php
│ ├── class-acf-field-password.php
│ ├── class-acf-field-post_object.php
│ ├── class-acf-field-radio.php
│ ├── class-acf-field-range.php
│ ├── class-acf-field-relationship.php
│ ├── class-acf-field-repeater.php
│ ├── class-acf-field-select.php
│ ├── class-acf-field-separator.php
│ ├── class-acf-field-tab.php
│ ├── class-acf-field-taxonomy.php
│ ├── class-acf-field-text.php
│ ├── class-acf-field-textarea.php
│ ├── class-acf-field-time_picker.php
│ ├── class-acf-field-true_false.php
│ ├── class-acf-field-url.php
│ ├── class-acf-field-user.php
│ ├── class-acf-field-wysiwyg.php
│ ├── class-acf-field.php
│ ├── class-acf-repeater-table.php
│ └── index.php
├── forms
│ ├── WC_Order.php
│ ├── form-attachment.php
│ ├── form-comment.php
│ ├── form-customizer.php
│ ├── form-front.php
│ ├── form-gutenberg.php
│ ├── form-nav-menu.php
│ ├── form-post.php
│ ├── form-taxonomy.php
│ ├── form-user.php
│ ├── form-widget.php
│ └── index.php
├── index.php
├── l10n.php
├── legacy
│ ├── index.php
│ └── legacy-locations.php
├── local-fields.php
├── local-json.php
├── local-meta.php
├── locations.php
├── locations
│ ├── abstract-acf-legacy-location.php
│ ├── abstract-acf-location.php
│ ├── class-acf-location-attachment.php
│ ├── class-acf-location-block.php
│ ├── class-acf-location-comment.php
│ ├── class-acf-location-current-user-role.php
│ ├── class-acf-location-current-user.php
│ ├── class-acf-location-nav-menu-item.php
│ ├── class-acf-location-nav-menu.php
│ ├── class-acf-location-options-page.php
│ ├── class-acf-location-page-parent.php
│ ├── class-acf-location-page-template.php
│ ├── class-acf-location-page-type.php
│ ├── class-acf-location-page.php
│ ├── class-acf-location-post-category.php
│ ├── class-acf-location-post-format.php
│ ├── class-acf-location-post-status.php
│ ├── class-acf-location-post-taxonomy.php
│ ├── class-acf-location-post-template.php
│ ├── class-acf-location-post-type.php
│ ├── class-acf-location-post.php
│ ├── class-acf-location-taxonomy.php
│ ├── class-acf-location-user-form.php
│ ├── class-acf-location-user-role.php
│ ├── class-acf-location-widget.php
│ └── index.php
├── loop.php
├── media.php
├── post-types
│ ├── class-acf-field-group.php
│ ├── class-acf-post-type.php
│ ├── class-acf-taxonomy.php
│ ├── class-acf-ui-options-page.php
│ └── index.php
├── rest-api.php
├── rest-api
│ ├── acf-rest-api-functions.php
│ ├── class-acf-rest-api.php
│ ├── class-acf-rest-embed-links.php
│ ├── class-acf-rest-request.php
│ ├── class-acf-rest-types-endpoint.php
│ └── index.php
├── revisions.php
├── scf-ui-options-page-functions.php
├── third-party.php
├── upgrades.php
├── validation.php
├── walkers
│ ├── class-acf-walker-taxonomy-field.php
│ └── index.php
└── wpml.php
├── index.php
├── lang
├── index.php
├── secure-custom-fields-ar.l10n.php
├── secure-custom-fields-ar.mo
├── secure-custom-fields-ar.po
├── secure-custom-fields-bg_BG.l10n.php
├── secure-custom-fields-bg_BG.mo
├── secure-custom-fields-bg_BG.po
├── secure-custom-fields-ca.l10n.php
├── secure-custom-fields-ca.mo
├── secure-custom-fields-ca.po
├── secure-custom-fields-cs_CZ.l10n.php
├── secure-custom-fields-cs_CZ.mo
├── secure-custom-fields-cs_CZ.po
├── secure-custom-fields-da_DK.l10n.php
├── secure-custom-fields-da_DK.mo
├── secure-custom-fields-da_DK.po
├── secure-custom-fields-de_CH.l10n.php
├── secure-custom-fields-de_CH.mo
├── secure-custom-fields-de_CH.po
├── secure-custom-fields-de_DE.l10n.php
├── secure-custom-fields-de_DE.mo
├── secure-custom-fields-de_DE.po
├── secure-custom-fields-de_DE_formal.l10n.php
├── secure-custom-fields-de_DE_formal.mo
├── secure-custom-fields-de_DE_formal.po
├── secure-custom-fields-el.l10n.php
├── secure-custom-fields-el.mo
├── secure-custom-fields-el.po
├── secure-custom-fields-en_CA.l10n.php
├── secure-custom-fields-en_CA.mo
├── secure-custom-fields-en_CA.po
├── secure-custom-fields-en_GB.l10n.php
├── secure-custom-fields-en_GB.mo
├── secure-custom-fields-en_GB.po
├── secure-custom-fields-en_ZA.l10n.php
├── secure-custom-fields-en_ZA.mo
├── secure-custom-fields-en_ZA.po
├── secure-custom-fields-es_CO.l10n.php
├── secure-custom-fields-es_CO.mo
├── secure-custom-fields-es_CO.po
├── secure-custom-fields-es_CR.l10n.php
├── secure-custom-fields-es_CR.mo
├── secure-custom-fields-es_CR.po
├── secure-custom-fields-es_MX.l10n.php
├── secure-custom-fields-es_MX.mo
├── secure-custom-fields-es_MX.po
├── secure-custom-fields-es_VE.l10n.php
├── secure-custom-fields-es_VE.mo
├── secure-custom-fields-es_VE.po
├── secure-custom-fields-fa_AF.l10n.php
├── secure-custom-fields-fa_AF.mo
├── secure-custom-fields-fa_AF.po
├── secure-custom-fields-fa_IR.l10n.php
├── secure-custom-fields-fa_IR.mo
├── secure-custom-fields-fa_IR.po
├── secure-custom-fields-fi.l10n.php
├── secure-custom-fields-fi.mo
├── secure-custom-fields-fi.po
├── secure-custom-fields-fr_CA.l10n.php
├── secure-custom-fields-fr_CA.mo
├── secure-custom-fields-fr_CA.po
├── secure-custom-fields-fr_FR.l10n.php
├── secure-custom-fields-fr_FR.mo
├── secure-custom-fields-fr_FR.po
├── secure-custom-fields-gl_ES.l10n.php
├── secure-custom-fields-gl_ES.mo
├── secure-custom-fields-gl_ES.po
├── secure-custom-fields-gu.l10n.php
├── secure-custom-fields-gu.mo
├── secure-custom-fields-gu.po
├── secure-custom-fields-he_IL.l10n.php
├── secure-custom-fields-he_IL.mo
├── secure-custom-fields-he_IL.po
├── secure-custom-fields-hr.l10n.php
├── secure-custom-fields-hr.mo
├── secure-custom-fields-hr.po
├── secure-custom-fields-hu_HU.l10n.php
├── secure-custom-fields-hu_HU.mo
├── secure-custom-fields-hu_HU.po
├── secure-custom-fields-id_ID.l10n.php
├── secure-custom-fields-id_ID.mo
├── secure-custom-fields-id_ID.po
├── secure-custom-fields-it_IT.l10n.php
├── secure-custom-fields-it_IT.mo
├── secure-custom-fields-it_IT.po
├── secure-custom-fields-ja.l10n.php
├── secure-custom-fields-ja.mo
├── secure-custom-fields-ja.po
├── secure-custom-fields-ko_KR.l10n.php
├── secure-custom-fields-ko_KR.mo
├── secure-custom-fields-ko_KR.po
├── secure-custom-fields-nb_NO.l10n.php
├── secure-custom-fields-nb_NO.mo
├── secure-custom-fields-nb_NO.po
├── secure-custom-fields-nl_NL_formal.l10n.php
├── secure-custom-fields-nl_NL_formal.mo
├── secure-custom-fields-nl_NL_formal.po
├── secure-custom-fields-pl_PL.l10n.php
├── secure-custom-fields-pl_PL.mo
├── secure-custom-fields-pl_PL.po
├── secure-custom-fields-pt_AO.l10n.php
├── secure-custom-fields-pt_AO.mo
├── secure-custom-fields-pt_AO.po
├── secure-custom-fields-pt_BR.l10n.php
├── secure-custom-fields-pt_BR.mo
├── secure-custom-fields-pt_BR.po
├── secure-custom-fields-pt_PT.l10n.php
├── secure-custom-fields-pt_PT.mo
├── secure-custom-fields-pt_PT.po
├── secure-custom-fields-ro_RO.l10n.php
├── secure-custom-fields-ro_RO.mo
├── secure-custom-fields-ro_RO.po
├── secure-custom-fields-sk_SK.l10n.php
├── secure-custom-fields-sk_SK.mo
├── secure-custom-fields-sk_SK.po
├── secure-custom-fields-tr_TR.l10n.php
├── secure-custom-fields-tr_TR.mo
├── secure-custom-fields-tr_TR.po
├── secure-custom-fields-uk.l10n.php
├── secure-custom-fields-uk.mo
├── secure-custom-fields-uk.po
├── secure-custom-fields-zh_TW.l10n.php
├── secure-custom-fields-zh_TW.mo
├── secure-custom-fields-zh_TW.po
└── secure-custom-fields.pot
├── license.txt
├── package-lock.json
├── package.json
├── phpstan.neon
├── phpunit.xml.dist
├── playwright.config.ts
├── pro
├── README.md
├── acf-pro.php
├── acf-ui-options-page-functions.php
├── admin
│ ├── admin-options-page.php
│ ├── post-types
│ │ ├── admin-ui-options-page.php
│ │ └── admin-ui-options-pages.php
│ └── views
│ │ ├── acf-ui-options-page
│ │ ├── advanced-settings.php
│ │ ├── basic-settings.php
│ │ ├── create-options-page-modal.php
│ │ └── list-empty.php
│ │ └── html-options-page.php
├── blocks.php
├── fields
│ ├── class-acf-field-clone.php
│ ├── class-acf-field-flexible-content.php
│ ├── class-acf-field-gallery.php
│ ├── class-acf-field-repeater.php
│ └── class-acf-repeater-table.php
├── locations
│ ├── class-acf-location-block.php
│ └── class-acf-location-options-page.php
├── options-page.php
└── post-types
│ └── acf-ui-options-page.php
├── readme.txt
├── secure-custom-fields.php
├── tests
├── e2e
│ ├── create-post-type.spec.ts
│ ├── field-type-repeater.spec.ts
│ ├── field-type-text-comment.spec.ts
│ ├── field-type-text-option.spec.ts
│ ├── field-type-text-term.spec.ts
│ ├── field-type-text-user.spec.ts
│ ├── field-type-text-with-scf-block.spec.ts
│ ├── field-type-text.spec.ts
│ ├── plugin-activation.spec.ts
│ └── plugins
│ │ ├── blocks
│ │ └── scf-movie-title-block
│ │ │ ├── block.json
│ │ │ └── template.php
│ │ ├── scf-test-get-field-comment.php
│ │ ├── scf-test-get-field-option.php
│ │ ├── scf-test-get-field-scf-block.php
│ │ ├── scf-test-get-field-term.php
│ │ ├── scf-test-get-field-user.php
│ │ ├── scf-test-get-field.php
│ │ └── scf-test-get-repeater-field.php
└── php
│ ├── bootstrap.php
│ ├── includes
│ └── forms
│ │ ├── test-form-customizer.php
│ │ └── test-form-post.php
│ ├── test-admin-beta-features.php
│ └── test-secure-custom-fields.php
└── webpack.config.js
/.github/workflows/e2e.yml:
--------------------------------------------------------------------------------
1 | name: E2E Tests
2 |
3 | on:
4 | pull_request:
5 | branches: [trunk]
6 |
7 | jobs:
8 | test:
9 | name: Playwright e2e Tests
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v4
13 |
14 | - name: Setup Node.js
15 | uses: actions/setup-node@v4
16 | with:
17 | node-version-file: ".nvmrc"
18 | cache: "npm"
19 |
20 | - name: Install dependencies
21 | run: |
22 | npm ci
23 | composer install --prefer-dist --no-progress
24 |
25 | - name: Npm build
26 | run: npm run build
27 |
28 | - name: Install wp-env
29 | run: npm install -g @wordpress/env
30 |
31 | - name: Start wp-env
32 | run: wp-env start
33 |
34 | - name: Install Playwright browsers
35 | run: npx playwright install --with-deps
36 |
37 | - name: Run e2e tests
38 | run: npm run test:e2e
39 |
40 | - name: Stop wp-env
41 | if: always()
42 | run: wp-env stop
43 |
--------------------------------------------------------------------------------
/.github/workflows/phpcs.yml:
--------------------------------------------------------------------------------
1 | name: Code Standards
2 | on:
3 | push:
4 | branches:
5 | - trunk
6 | - 'branch/*'
7 | pull_request:
8 | branches:
9 | - trunk
10 | - 'branch/*'
11 |
12 | jobs:
13 | phpcs:
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - uses: actions/checkout@v4
18 | with:
19 | fetch-depth: 0 # Required for phpcs-changed to compare with base branch
20 |
21 | - name: Setup PHP
22 | uses: shivammathur/setup-php@v2
23 | with:
24 | php-version: '8.4'
25 | tools: composer:v2
26 |
27 | - name: Install Dependencies
28 | run: composer install
29 |
30 | - name: Run PHPCS on changed files
31 | env:
32 | BASE_REF: ${{ github.base_ref }}
33 | run: |
34 | CHANGED_FILES=$(git diff --name-only --no-renames --diff-filter=d "origin/$BASE_REF" '*.php' || true)
35 | if [[ -n "$CHANGED_FILES" ]]; then
36 | vendor/bin/phpcs-changed \
37 | --git-base="origin/$BASE_REF" \
38 | --phpcs-path=vendor/bin/phpcs \
39 | --standard=.phpcs.xml.dist \
40 | $CHANGED_FILES
41 | else
42 | echo "No PHP files changed"
43 | fi
--------------------------------------------------------------------------------
/.github/workflows/phpstan.yml:
--------------------------------------------------------------------------------
1 | name: Static Analysis
2 |
3 | on:
4 | push:
5 | branches:
6 | - trunk
7 | - 'branch/*'
8 | pull_request:
9 | branches:
10 | - trunk
11 | - 'branch/*'
12 |
13 | jobs:
14 | phpstan:
15 | name: PHPStan
16 | runs-on: ubuntu-latest
17 |
18 | steps:
19 | - name: Checkout code
20 | uses: actions/checkout@v4
21 |
22 | - name: Setup PHP
23 | uses: shivammathur/setup-php@v2
24 | with:
25 | php-version: '8.4'
26 | coverage: none
27 | tools: composer:v2
28 |
29 | - name: Install dependencies
30 | run: composer install --no-progress --prefer-dist --no-interaction
31 |
32 | - name: Run PHPStan
33 | run: composer test:phpstan
--------------------------------------------------------------------------------
/.github/workflows/phpunit.yml:
--------------------------------------------------------------------------------
1 | name: PHPUnit Tests
2 |
3 | on:
4 | push:
5 | branches:
6 | - trunk
7 | - 'branch/*'
8 | pull_request:
9 | branches:
10 | - trunk
11 | - 'branch/*'
12 |
13 | jobs:
14 | test:
15 | name: PHP ${{ matrix.php }}
16 | runs-on: ubuntu-latest
17 |
18 | strategy:
19 | matrix:
20 | include:
21 | # Minimum supported PHP
22 | - php: '7.4'
23 | # Latest stable PHP
24 | - php: '8.4'
25 | fail-fast: false
26 |
27 | steps:
28 | - name: Checkout code
29 | uses: actions/checkout@v4
30 |
31 | - name: Setup PHP
32 | uses: shivammathur/setup-php@v2
33 | with:
34 | php-version: ${{ matrix.php }}
35 | coverage: none
36 | tools: composer:v2
37 |
38 | - name: Install dependencies
39 | run: |
40 | composer install --no-progress --prefer-dist --no-interaction
41 |
42 | - name: Run PHPUnit
43 | run: composer test:php
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Node.js
2 | npm-debug.log
3 | yarn-error.log
4 |
5 | # Logs
6 | logs/
7 | *.log
8 | *.log.*
9 |
10 | # Dependency directories
11 | jspm_packages/
12 | /vendor/
13 | /node_modules/
14 |
15 | # WorDBless
16 | /wordpress/
17 |
18 | # Optional npm cache directory
19 | .npm
20 |
21 | # Optional eslint cache
22 | .eslintcache
23 |
24 | # Optional REPL history
25 | .node_repl_history
26 |
27 | # Environment variables
28 | .env
29 | .env.test
30 | .env.production
31 | .wp-env.override.json
32 |
33 | # MacOS
34 | .DS_Store
35 |
36 | # IDEs and editors
37 | .idea/
38 | .vscode/
39 | *.suo
40 | *.ntvs*
41 | *.njsproj
42 | *.sln
43 | .cursorrules
44 | .cursorignore
45 |
46 | # Assets build directory
47 | assets/build/**/*.css
48 | assets/build/**/*.map
49 | assets/build/**/*.js
50 | assets/build/**/*.php
51 |
52 | # PHPUnit result cache
53 | .phpunit.result.cache
54 |
55 | # Playwright
56 | /test-results/
57 | /playwright-report/
58 | /blob-report/
59 | /playwright/.cache/
60 | /artifacts/
61 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . .husky/pre-commit-phpcbf.sh
3 | composer normalize
4 | npm run sort-package-json
--------------------------------------------------------------------------------
/.markdownlint.json:
--------------------------------------------------------------------------------
1 | {
2 | "default": true,
3 | "MD013": false,
4 | "MD024": false,
5 | "MD033": {
6 | "allowed_elements": [
7 | "br",
8 | "img",
9 | "video",
10 | "details",
11 | "summary"
12 | ]
13 | },
14 | "no-inline-html": {
15 | "allowed_elements": [
16 | "br",
17 | "kbd",
18 | "sup"
19 | ]
20 | },
21 | "first-line-h1": false,
22 | "commands-show-output": false,
23 | "code-block-style": false,
24 | "no-duplicate-heading": {
25 | "siblings_only": true
26 | },
27 | "no-trailing-punctuation": {
28 | "punctuation": ".,;:!"
29 | },
30 | "ol-prefix": {
31 | "style": "ordered"
32 | },
33 | "fenced-code-language": true,
34 | "ignores": [
35 | "vendor/**",
36 | "node_modules/**"
37 | ]
38 | }
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 22
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | // Import the default config file and expose it in the project root.
2 | // Useful for editor integrations.
3 | module.exports = {
4 | ...require( '@wordpress/prettier-config' ),
5 | };
6 |
--------------------------------------------------------------------------------
/.wordpress-org/banner-1544x500.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/banner-1544x500.jpg
--------------------------------------------------------------------------------
/.wordpress-org/banner-772x250.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/banner-772x250.jpg
--------------------------------------------------------------------------------
/.wordpress-org/blueprints/blueprint.json:
--------------------------------------------------------------------------------
1 | {
2 | "landingPage": "/wp-admin/edit.php?post_type=acf-field-group",
3 | "features": {
4 | "networking": true
5 | },
6 | "steps": [
7 | {
8 | "step": "login",
9 | "username": "admin",
10 | "password": "password"
11 | },
12 | {
13 | "step": "installPlugin",
14 | "pluginZipFile": {
15 | "resource": "wordpress.org/plugins",
16 | "slug": "secure-custom-fields"
17 | },
18 | "options": {
19 | "activate": true
20 | }
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/.wordpress-org/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/icon-128x128.png
--------------------------------------------------------------------------------
/.wordpress-org/icon-256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/icon-256x256.png
--------------------------------------------------------------------------------
/.wordpress-org/screenshot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/screenshot-1.png
--------------------------------------------------------------------------------
/.wordpress-org/screenshot-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/screenshot-2.png
--------------------------------------------------------------------------------
/.wordpress-org/screenshot-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/screenshot-3.png
--------------------------------------------------------------------------------
/.wordpress-org/screenshot-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WordPress/secure-custom-fields/0e65f484739b4f3283f0f4002ef12cc6cef0cf45/.wordpress-org/screenshot-4.png
--------------------------------------------------------------------------------
/.wp-env.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./schemas/json/wp-env.json",
3 | "plugins": ["."],
4 | "env": {
5 | "tests": {
6 | "mappings": {
7 | "wp-content/plugins/secure-custom-fields": ".",
8 | "wp-content/plugins/scf-test-plugins": "./tests/e2e/plugins"
9 | }
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Secure Custom Fields
2 |
3 | Welcome to the official Secure Custom Fields repository on GitHub. SCF is a WordPress plugin used to take full control of your edit screens & custom field data.
4 |
5 | ## Documentation
6 |
7 | Do you need help getting started with SCF, or do you have questions about one of the SCF features? Please use the [support forums](https://wordpress.org/support/plugin/secure-custom-fields/) on WordPress.org.
8 |
9 | ## Support
10 |
11 | This repository is not suitable for support. Please don't use our issue tracker for support requests, but for core issues only.
12 | Support can take place in forums.
13 |
14 | ## Contributing
15 |
16 | If you have a patch, or stumbled upon an issue with SCF core, you can contribute this back to the code. Please create a new GitHub issue with as much information as possible, and a PR if appropriate ([local environment setup](https://github.com/WordPress/secure-custom-fields/blob/trunk/docs/contributing/index.md#development-setup)).
17 |
18 | ## Translations
19 |
20 | If you're looking to translate SCF, please use [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/secure-custom-fields/stable/).
21 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Reporting Security Issues
2 |
3 | The WordPress community take security bugs seriously. We appreciate your efforts to disclose your findings responsibly and will make every effort to acknowledge your contributions.
4 |
5 | To report a security issue, please visit the [WordPress HackerOne](https://hackerone.com/wordpress) program.
6 |
--------------------------------------------------------------------------------
/assets/build/css/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/assets/images/field-states/checkbox-indeterminate.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/field-states/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-button-group.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-checkbox.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-clone.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-color-picker.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-date-picker.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-date-time-picker.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-file.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-flexible-content.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-gallery.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-google-map.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-group.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-image.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-message.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-number.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-page-link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-password.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-post-object.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-radio.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-range.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-relationship.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-tab.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-taxonomy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-text.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-textarea.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-time-picker.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-true-false.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-url.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/icon-field-wysiwyg.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/field-type-icons/index.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-alert-triangle.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-arrow-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-arrow-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-arrow-up-right.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-check-circle-solid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-chevron-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-chevron-left-double.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-chevron-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-chevron-right-double.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-chevron-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-chevron-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-close-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-copy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-draggable.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-export.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-fields.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-globe.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-help.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-hidden.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-import.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-info-red.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-info-solid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-info-white.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-info.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-key-solid.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-layout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-regenerate.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-sliders.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-stars.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-time.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-tools.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-trash.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-updates.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-warning-alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/icon-warning.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/index.php:
--------------------------------------------------------------------------------
1 | label".
28 | * @date 20/5/19
29 | * @since ACF 5.8.1
30 | * @param array $roles A specific array of roles.
31 | * @return array
32 |
33 | ## `acf_allow_unfiltered_html()`
34 |
35 | acf_allow_unfiltered_html
36 |
37 | * Returns true if the current user is allowed to save unfiltered HTML.
38 | * @date 9/1/19
39 | * @since ACF 5.7.10
40 | * @return boolean
41 |
42 | ---
43 |
--------------------------------------------------------------------------------
/docs/code-reference/admin/admin-notices-file.md:
--------------------------------------------------------------------------------
1 | # Admin Notices Global Functions
2 |
3 | ## `acf_new_admin_notice()`
4 |
5 | Instantiates and returns a new model.
6 |
7 | * @date 23/12/18
8 | * @since ACF 5.8.0
9 | * @param array $data Optional data to set.
10 | * @return ACF_Admin_Notice
11 |
12 | ## `acf_render_admin_notices()`
13 |
14 | Renders all admin notices HTML.
15 |
16 | * @date 10/1/19
17 | * @since ACF 5.7.10
18 | * @return void
19 |
20 | ## `acf_add_admin_notice()`
21 |
22 | Creates and returns a new notice.
23 |
24 | * @date 17/10/13
25 | * @since ACF 5.0.0
26 | * @param string $text The admin notice text.
27 | * @param string $type The type of notice (warning, error, success, info).
28 | * @param boolean $dismissible Is this notification dismissible (default true) (since ACF 5.11.0).
29 | * @param boolean $persisted Store once a notice has been dismissed per user and prevent showing it again. (since ACF 6.1.0).
30 | * @return ACF_Admin_Notice
31 |
32 | ---
33 |
--------------------------------------------------------------------------------
/docs/code-reference/admin/admin-tools-file.md:
--------------------------------------------------------------------------------
1 | # Admin Tools Global Functions
2 |
3 | ## `acf_register_admin_tool()`
4 |
5 | Alias of acf()->admin_tools->register_tool()
6 |
7 | * @type function
8 | * @date 31/5/17
9 | * @since ACF 5.6.0
10 | * @param ACF_Admin_Tool $class The tool class.
11 | * @return void
12 |
13 | ## `acf_get_admin_tools_url()`
14 |
15 | * This function will return the admin URL to the tools page
16 | * @type function
17 | * @date 31/5/17
18 | * @since ACF 5.6.0
19 | * @return string The URL to the tools page.
20 |
21 | ## `acf_get_admin_tool_url()`
22 |
23 | This function will return the admin URL to the tools page
24 |
25 | * @type function
26 | * @date 31/5/17
27 | * @since ACF 5.6.0
28 | * @param string $tool The tool name.
29 | * @return string The URL to a particular tool's page.
30 |
31 | ---
32 |
--------------------------------------------------------------------------------
/docs/code-reference/admin/index.md:
--------------------------------------------------------------------------------
1 | # Admin
2 |
3 | ## Files
4 |
5 | - [Admin Notices](admin-notices-file)
6 | - [Admin Tools](admin-tools-file)
7 |
--------------------------------------------------------------------------------
/docs/code-reference/admin/views/global/index.md:
--------------------------------------------------------------------------------
1 | # Admin Views Global
2 |
3 | ## Files
4 |
5 | - [Navigation](navigation-file)
6 |
--------------------------------------------------------------------------------
/docs/code-reference/admin/views/global/navigation-file.md:
--------------------------------------------------------------------------------
1 | # Navigation Global Functions
2 |
3 | ## `acf_print_menu_section()`
4 |
5 | Helper function for looping over the provided menu items
6 | and echoing out the necessary markup.
7 |
8 | * @since ACF 6.2
9 | * @param array $menu_items An array of menu items to print.
10 | * @param string $section The section being printed.
11 | * @return void
12 |
13 | ---
14 |
--------------------------------------------------------------------------------
/docs/code-reference/api/index.md:
--------------------------------------------------------------------------------
1 | # Api
2 |
3 | ## Files
4 |
5 | - [Api Helpers](api-helpers-file)
6 | - [Api Template](api-template-file)
7 | - [Api Term](api-term-file)
8 |
--------------------------------------------------------------------------------
/docs/code-reference/assets-file.md:
--------------------------------------------------------------------------------
1 | # Assets Global Functions
2 |
3 | ## `acf_localize_text()`
4 |
5 | Appends an array of i18n data for localization.
6 |
7 | * @date 13/4/18
8 | * @since ACF 5.6.9
9 | * @param array $text An array of text for i18n.
10 | * @return void
11 |
12 | ## `acf_localize_data()`
13 |
14 | Appends an array of l10n data for localization.
15 |
16 | * @date 13/4/18
17 | * @since ACF 5.6.9
18 | * @param array $data An array of data for l10n.
19 | * @return void
20 |
21 | ## `acf_enqueue_script()`
22 |
23 | Enqueues a script with support for supplemental inline scripts.
24 |
25 | * @date 27/4/20
26 | * @since ACF 5.9.0
27 | * @param string $name The script name.
28 | * @return void
29 |
30 | ## `acf_enqueue_scripts()`
31 |
32 | Enqueues the input scripts required for fields.
33 |
34 | * @date 13/4/18
35 | * @since ACF 5.6.9
36 | * @param array $args See ACF_Assets::enqueue_scripts() for a list of args.
37 | * @return void
38 |
39 | ## `acf_enqueue_uploader()`
40 |
41 | Enqueues the WP media uploader scripts and styles.
42 |
43 | * @date 27/10/2014
44 | * @since ACF 5.0.9
45 | * @return void
46 |
47 | ---
48 |
--------------------------------------------------------------------------------
/docs/code-reference/compatibility-file.md:
--------------------------------------------------------------------------------
1 | # Compatibility Global Functions
2 |
3 | ## `acf_get_compatibility()`
4 |
5 | Returns true if compatibility is enabled for the given component.
6 |
7 | * @date 20/1/15
8 | * @since ACF 5.1.5
9 | * @param string $name The name of the component to check.
10 | * @return boolean
11 |
12 | ---
13 |
--------------------------------------------------------------------------------
/docs/code-reference/fields/index.md:
--------------------------------------------------------------------------------
1 | # Fields
2 |
3 | ## Files
4 |
5 | - [Class Acf Repeater Table](class-acf-repeater-table-file)
6 |
--------------------------------------------------------------------------------
/docs/code-reference/forms/form-front-file.md:
--------------------------------------------------------------------------------
1 | # Form Front Global Functions
2 |
3 | ## `acf_form_head()`
4 |
5 | Functions
6 |
7 | * alias of acf()->form->functions
8 | * @type function
9 | * @date 11/06/2014
10 | * @since ACF 5.0.0
11 | * @param n/a
12 | * @return n/a
13 |
14 | ---
15 |
--------------------------------------------------------------------------------
/docs/code-reference/forms/index.md:
--------------------------------------------------------------------------------
1 | # Forms
2 |
3 | ## Files
4 |
5 | - [Form Front](form-front-file)
6 |
--------------------------------------------------------------------------------
/docs/code-reference/hooks/index.md:
--------------------------------------------------------------------------------
1 | # Hooks
2 |
3 | ## Files
4 |
5 | - [Action](action)
6 | - [Filter](filter)
7 |
--------------------------------------------------------------------------------
/docs/code-reference/l10n-file.md:
--------------------------------------------------------------------------------
1 | # L10n Global Functions
2 |
3 | ## `acf_get_locale()`
4 |
5 | Returns the current locale.
6 |
7 | * @date 16/12/16
8 | * @since ACF 5.5.0
9 | * @return string
10 |
11 | ## `acf_load_textdomain()`
12 |
13 | acf_load_textdomain
14 |
15 | * Loads the plugin's translated strings similar to load_plugin_textdomain().
16 | * @date 8/1/19
17 | * @since ACF 5.7.10
18 | * @param string $locale The plugin's current locale.
19 | * @return void
20 |
21 | ## `_acf_apply_language_cache_key()`
22 |
23 | _acf_apply_language_cache_key
24 |
25 | * Applies the current language to the cache key.
26 | * @date 23/1/19
27 | * @since ACF 5.7.11
28 | * @param string $key The cache key.
29 | * @return string
30 |
31 | ---
32 |
--------------------------------------------------------------------------------
/docs/code-reference/local-json-file.md:
--------------------------------------------------------------------------------
1 | # Local Json Global Functions
2 |
3 | ## `acf_get_local_json_files()`
4 |
5 | Returns an array of found JSON field group files.
6 |
7 | * @date 14/4/20
8 | * @since ACF 5.9.0
9 | * @param string $post_type The ACF post type to get files for.
10 | * @return array
11 |
12 | ## `acf_write_json_field_group()`
13 |
14 | Saves a field group JSON file.
15 |
16 | * @date 5/12/2014
17 | * @since ACF 5.1.5
18 | * @param array $field_group The field group.
19 | * @return boolean
20 |
21 | ## `acf_delete_json_field_group()`
22 |
23 | Deletes a field group JSON file.
24 |
25 | * @date 5/12/2014
26 | * @since ACF 5.1.5
27 | * @param string $key The field group key.
28 | * @return boolean True on success.
29 |
30 | ---
31 |
--------------------------------------------------------------------------------
/docs/code-reference/local-meta-file.md:
--------------------------------------------------------------------------------
1 | # Local Meta Global Functions
2 |
3 | ## `acf_setup_meta()`
4 |
5 | acf_setup_meta
6 |
7 | * Adds postmeta to storage.
8 | * @date 8/10/18
9 | * @since ACF 5.8.0
10 | @see ACF_Local_Meta::add() for list of parameters.
11 | * @return array
12 |
13 | ## `acf_reset_meta()`
14 |
15 | acf_reset_meta
16 |
17 | * Removes postmeta to storage.
18 | * @date 8/10/18
19 | * @since ACF 5.8.0
20 | @see ACF_Local_Meta::remove() for list of parameters.
21 | * @return void
22 |
23 | ---
24 |
--------------------------------------------------------------------------------
/docs/code-reference/loop-file.md:
--------------------------------------------------------------------------------
1 | # Loop Global Functions
2 |
3 | ## `acf_add_loop()`
4 |
5 | alias of acf()->loop->add_loop()
6 |
7 | * @type function
8 | * @date 6/10/13
9 | * @since ACF 5.0.0
10 | * @param n/a
11 | * @return n/a
12 |
13 | ## `acf_update_loop()`
14 |
15 | alias of acf()->loop->update_loop()
16 |
17 | * @type function
18 | * @date 6/10/13
19 | * @since ACF 5.0.0
20 | * @param n/a
21 | * @return n/a
22 |
23 | ## `acf_get_loop()`
24 |
25 | alias of acf()->loop->get_loop()
26 |
27 | * @type function
28 | * @date 6/10/13
29 | * @since ACF 5.0.0
30 | * @param n/a
31 | * @return n/a
32 |
33 | ## `acf_remove_loop()`
34 |
35 | alias of acf()->loop->remove_loop()
36 |
37 | * @type function
38 | * @date 6/10/13
39 | * @since ACF 5.0.0
40 | * @param n/a
41 | * @return n/a
42 |
43 | ---
44 |
--------------------------------------------------------------------------------
/docs/code-reference/rest-api/acf-rest-api-functions-file.md:
--------------------------------------------------------------------------------
1 | # Acf Rest API Functions Global Functions
2 |
3 | ## `acf_get_field_rest_schema()`
4 |
5 | Get the REST API schema for a given field.
6 |
7 | * @param array $field
8 | * @return array
9 |
10 | ## `acf_get_field_rest_links()`
11 |
12 | Get the REST API field links for a given field. The links are appended to the REST response under the _links property
13 | and provide API resource links to related objects. If a link is marked as 'embeddable', WordPress can load the resource
14 | in the main request under the_embedded property when the request contains the _embed URL parameter.
15 |
16 | * @see \acf_field::get_rest_links()
17 | @see
18 | * @param string|integer $post_id
19 | * @param array $field
20 | * @return array
21 |
22 | ## `acf_format_value_for_rest()`
23 |
24 | Format a given field's value for output in the REST API.
25 |
26 | * @param $value
27 | * @param $post_id
28 | * @param $field
29 | * @param string $format 'light' for normal REST API formatting or 'standard' to apply ACF's normal field formatting.
30 | * @return mixed
31 |
32 | ---
33 |
--------------------------------------------------------------------------------
/docs/code-reference/rest-api/class-acf-rest-embed-links-file.md:
--------------------------------------------------------------------------------
1 | # ACF_Rest_Embed_Links
2 |
3 | Class ACF_Rest_Embed_Links
4 |
5 | * Manage the addition of embed links on supported REST endpoints.
6 |
7 | ## Properties
8 |
9 | ### `$links`
10 |
11 | * @var array Links to add to the response. These can be flagged as embeddable and expanded when _embed is passed with the request.
12 |
13 | ## Methods
14 |
15 | ### `hook_link_handlers`
16 |
17 | Hook into all REST-enabled post type, taxonomy, and the user controllers in order to prepare links.
18 |
19 | ### `prepare_links`
20 |
21 | Add links to internal property for subsequent use in \ACF_Rest_Embed_Links::load_item_links().
22 |
23 | * @param $post_id
24 | * @param array $field
25 |
26 | ### `load_item_links`
27 |
28 | Hook into the rest_prepare_{$type} filters and add links for the object being prepared.
29 |
30 | * @param WP_REST_Response $response
31 | * @param WP_Post|WP_User|WP_Term $item
32 | * @param WP_REST_Request $request
33 | * @return WP_REST_Response
34 |
--------------------------------------------------------------------------------
/docs/code-reference/rest-api/index.md:
--------------------------------------------------------------------------------
1 | # REST API
2 |
3 | ## Files
4 |
5 | - [Acf REST API Functions](acf-rest-api-functions-file)
6 | - [Class Acf REST API](class-acf-rest-api-file)
7 | - [Class ACF REST Embed Links](class-acf-rest-embed-links-file)
8 | - [Class ACF REST Request](class-acf-rest-request-file)
9 |
--------------------------------------------------------------------------------
/docs/code-reference/revisions-file.md:
--------------------------------------------------------------------------------
1 | # Revisions Global Functions
2 |
3 | ## `acf_save_post_revision()`
4 |
5 | This function will copy meta from a post to it's latest revision
6 |
7 | * @type function
8 | * @date 26/09/2016
9 | * @since ACF 5.4.0
10 | * @param $post_id (int)
11 | * @return n/a
12 |
13 | ## `acf_get_post_latest_revision()`
14 |
15 | This function will return the latest revision for a given post
16 |
17 | * @type function
18 | * @date 25/06/2016
19 | * @since ACF 5.3.8
20 | * @param $post_id (int)
21 | * @return $post_id (int)
22 |
23 | ---
24 |
--------------------------------------------------------------------------------
/docs/concepts/index.md:
--------------------------------------------------------------------------------
1 | # Core Concepts
2 |
3 | This section covers the fundamental concepts and architecture of Secure Custom Fields.
4 |
5 | ## In This Section
6 |
7 | - [Architecture](architecture) - Understanding SCF's internal structure
8 | - [Security](security) - Security principles and best practices
9 |
10 | ## Overview
11 |
12 | Secure Custom Fields is built on several core concepts that ensure security, flexibility, and extensibility. Understanding these concepts will help you make the most of the plugin.
13 |
--------------------------------------------------------------------------------
/docs/concepts/security.md:
--------------------------------------------------------------------------------
1 | # Security in Secure Custom Fields
2 |
3 | Security is a core principle of Secure Custom Fields. This guide explains our security practices and how to implement them in your projects.
4 |
5 | ## Core Security Principles
6 |
7 | 1. **Input Validation**
8 | - All user input is validated
9 | - Type checking enforced
10 | - Sanitization applied appropriately
11 |
12 | 2. **Output Escaping**
13 | - Context-aware escaping
14 | - HTML, attributes, and URLs handled separately
15 | - Custom escaping functions for specific needs
16 |
17 | 3. **Capability Checking**
18 | - Granular permission system
19 | - Role-based access control
20 | - Custom capability support
21 |
22 | ## Best Practices
23 |
24 | When working with SCF:
25 |
26 | 1. Always use provided escaping functions
27 | 2. Check user capabilities before operations
28 | 3. Validate all data before saving
29 | 4. Use nonces for form submissions
30 |
--------------------------------------------------------------------------------
/docs/contributing/documentation.md:
--------------------------------------------------------------------------------
1 | # Documentation Guidelines
2 |
3 | Guidelines for contributing to SCF documentation.
4 |
5 | ## Style Guide
6 |
7 | We follow the [WordPress Documentation Style Guide](https://make.wordpress.org/docs/style-guide/):
8 |
9 | 1. **Voice and Tone**
10 | - Clear and concise
11 | - Professional but friendly
12 | - Internationally accessible
13 | - Gender-neutral language
14 |
15 | 2. **Formatting**
16 | - Use Markdown
17 | - Follow heading hierarchy
18 | - Include code examples
19 | - Use proper spacing
20 |
21 | 3. **Content Structure**
22 | - Start with overview
23 | - Include examples
24 | - Provide context
25 | - Link related topics
26 |
27 | ## Documentation Types
28 |
29 | 1. **User Documentation**
30 | - Installation guides
31 | - Usage instructions
32 | - UI explanations
33 | - Troubleshooting
34 |
35 | 2. **Developer Documentation**
36 | - API reference
37 | - Hook documentation
38 | - Integration guides
39 | - Security practices
40 |
--------------------------------------------------------------------------------
/docs/contributing/index.md:
--------------------------------------------------------------------------------
1 | # Contributing to SCF
2 |
3 | Guide for contributing to Secure Custom Fields development.
4 |
5 | ## Ways to Contribute
6 |
7 | 1. **Code Contributions**
8 | - Bug fixes
9 | - New features
10 | - Performance improvements
11 | - Security enhancements
12 |
13 | 2. **Documentation**
14 | - Writing tutorials
15 | - Improving reference docs
16 | - Fixing errors
17 | - Adding examples
18 |
19 | 3. **Testing**
20 | - Unit testing
21 | - Integration testing
22 | - Bug reporting
23 | - Feature validation
24 |
25 | ## Development Setup
26 |
27 | 1. Fork the repository
28 | 2. Set up local environment
29 | - The local environment runs with WP env, for setup, see: https://developer.wordpress.org/block-editor/reference-guides/packages/packages-env/ along with prerequisites.
30 | 3. Install dependencies
31 | - run `composer install`
32 | - build the plugin files (JS/CSS) via `npm run build`
33 | 4. Run test suite
34 | - `composer run test`
35 |
36 | ## Contribution Guidelines
37 |
38 | - Follow WordPress coding standards
39 | - Write unit tests for new features
40 | - Document all changes
41 | - Keep pull requests focused
42 |
--------------------------------------------------------------------------------
/docs/features/field/META.md:
--------------------------------------------------------------------------------
1 | # Field Documentation Guide
2 |
3 | This directory contains documentation for all field types in Secure Custom Fields.
4 |
5 | ## Structure
6 |
7 | Each field type has its own directory containing:
8 |
9 | - `index.md` - Main documentation for the field
10 | - `tutorial.md` - Step-by-step tutorial for implementing the field
11 |
12 | ## Adding New Field Documentation
13 |
14 | 1. Create a new directory for the field type
15 | 2. Create both required files
16 | 3. Follow the standard format for each file type
17 | 4. Include code examples and use cases
18 |
19 | ## Documentation Standards
20 |
21 | (To be added).
22 |
--------------------------------------------------------------------------------
/docs/features/field/accordion/index.md:
--------------------------------------------------------------------------------
1 | # Accordion Field
2 |
3 | The Accordion field creates collapsible sections to organize your fields into logical groups. It helps improve the editing experience by reducing visual clutter and grouping related fields together.
4 |
5 | ## Key Features
6 |
7 | - Creates collapsible sections for field organization
8 | - Can be set to open/closed by default
9 | - Supports multiple open sections simultaneously
10 | - Can act as an endpoint for previous accordion sections
11 |
12 | ## Settings
13 |
14 | - Open - Display this accordion as open on page load
15 | - Multi-Expand - Allow this accordion to open without closing others
16 | - Endpoint - Define an endpoint for the previous accordion to stop
17 |
--------------------------------------------------------------------------------
/docs/features/field/accordion/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Accordion Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add an Accordion field
7 | 3. Configure basic settings:
8 | - Set a clear section title
9 | - Choose if it should be open by default
10 | - Decide if multiple sections can be open
11 |
12 | ## Common Use Cases
13 |
14 | 1. Organizing Content Sections
15 | - Group related fields together
16 | - Use clear section names
17 | - Consider the editing workflow
18 |
19 | 2. Creating Form Sections
20 | - Basic Information
21 | - Detailed Content
22 | - Settings/Configuration
23 |
24 | ## Tips
25 |
26 | - Keep section names concise but descriptive
27 | - Don't nest accordions too deeply
28 | - Consider using endpoints to create clear breaks
29 | - Group related fields logically
30 |
--------------------------------------------------------------------------------
/docs/features/field/button-group/index.md:
--------------------------------------------------------------------------------
1 | # Button Group Field
2 |
3 | The Button Group field provides a set of buttons where users can select one option from multiple choices. It offers a more visual and user-friendly alternative to radio buttons or select dropdowns.
4 |
5 | ## Key Features
6 |
7 | - Visual button-style interface
8 | - Single option selection
9 | - Customizable button labels
10 | - Clear visual indication of selected option
11 |
12 | ## Settings
13 |
14 | - Choices - Define the available options
15 | - Default Value - Set the pre-selected option
16 | - Return Format - Specify how the value should be returned
17 | - Allow Null - Option to have no selection
18 |
--------------------------------------------------------------------------------
/docs/features/field/button-group/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Button Group Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Button Group field
7 | 3. Configure the choices:
8 | - Add value:label pairs
9 | - Set a default value
10 | - Choose return format
11 |
12 | ## Common Use Cases
13 |
14 | 1. Simple Toggle Options
15 | - Yes/No choices
16 | - Show/Hide settings
17 | - Layout selections
18 |
19 | 2. Status Selection
20 | - Draft/Review/Published
21 | - Active/Inactive
22 | - Priority levels
23 |
24 | ## Tips
25 |
26 | - Keep choices concise
27 | - Use clear labels
28 | - Consider mobile usability
29 | - Limit number of options
30 |
--------------------------------------------------------------------------------
/docs/features/field/checkbox/index.md:
--------------------------------------------------------------------------------
1 | # Checkbox Field
2 |
3 | The Checkbox field allows users to select one or multiple choices from a set of options. It's ideal for situations where multiple selections are needed or when users need to toggle specific options on/off.
4 |
5 | ## Key Features
6 |
7 | - Multiple option selection
8 | - Toggle individual choices
9 | - Customizable checkbox layout
10 | - Flexible return format
11 |
12 | ## Settings
13 |
14 | - Choices - Define the available options
15 | - Default Value - Set pre-selected options
16 | - Layout - Choose between vertical or horizontal layout
17 | - Allow Custom - Enable user-added choices
18 | - Toggle All - Option to select/deselect all choices
19 |
--------------------------------------------------------------------------------
/docs/features/field/checkbox/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Checkbox Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Checkbox field
7 | 3. Configure options:
8 | - Add checkbox choices
9 | - Set layout (vertical/horizontal)
10 | - Choose return format
11 | - Enable/disable "Select All"
12 |
13 | ## Common Use Cases
14 |
15 | 1. Multiple Selection Lists
16 | - Categories/Tags
17 | - Feature toggles
18 | - Permission settings
19 |
20 | 2. Option Configuration
21 | - Settings panels
22 | - Display preferences
23 | - Content filters
24 |
25 | ## Tips
26 |
27 | - Group related options together
28 | - Consider using columns for many options
29 | - Provide clear labels
30 | - Use "Select All" for long lists
31 |
--------------------------------------------------------------------------------
/docs/features/field/clone/index.md:
--------------------------------------------------------------------------------
1 | # Clone Field
2 |
3 | The Clone field allows you to reuse existing fields or field groups in multiple locations. This helps maintain consistency and reduces the need to recreate commonly used field configurations.
4 |
5 | ## Key Features
6 |
7 | - Copy existing field configurations
8 | - Clone individual fields or entire field groups
9 | - Prefix labels to avoid naming conflicts
10 | - Maintain synchronized settings across cloned instances
11 |
12 | ## Settings
13 |
14 | - Select Fields - Choose which fields or groups to clone
15 | - Display - Control how the cloned fields appear
16 | - Prefix Label - Add a prefix to cloned field labels
17 | - Prefix Name - Add a prefix to cloned field names
18 |
--------------------------------------------------------------------------------
/docs/features/field/clone/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Clone Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Clone field
7 | 3. Configure clone settings:
8 | - Select fields/groups to clone
9 | - Choose display format
10 | - Set prefix options
11 | - Configure labels
12 |
13 | ## Common Use Cases
14 |
15 | 1. Reusable Field Sets
16 | - Contact information
17 | - Social media links
18 | - Common metadata
19 |
20 | 2. Template Components
21 | - Shared content blocks
22 | - Repeated field patterns
23 | - Standard form elements
24 |
25 | ## Tips
26 |
27 | - Use meaningful prefixes
28 | - Consider data structure
29 | - Keep cloned groups focused
30 | - Document clone relationships
31 |
--------------------------------------------------------------------------------
/docs/features/field/color-picker/index.md:
--------------------------------------------------------------------------------
1 | # Color Picker Field
2 |
3 | The Color Picker field provides an interactive interface for selecting colors. It supports both RGB and RGBA color formats and includes a visual color picker with opacity control.
4 |
5 | ## Key Features
6 |
7 | - Visual color selection interface
8 | - RGB and RGBA color support
9 | - Opacity/transparency control
10 | - Default color presets
11 | - Hex color input
12 |
13 | ## Settings
14 |
15 | - Default Value - Set a default color
16 | - Return Format - Choose between string, array, or rgba format
17 | - Enable Opacity - Allow transparency selection
18 |
--------------------------------------------------------------------------------
/docs/features/field/color-picker/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Color Picker Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Color Picker field
7 | 3. Configure options:
8 | - Set default color
9 | - Enable/disable opacity
10 | - Choose return format
11 | - Set display preferences
12 |
13 | ## Common Use Cases
14 |
15 | 1. Theme Customization
16 | - Brand colors
17 | - Background colors
18 | - Text colors
19 |
20 | 2. Design Elements
21 | - Button colors
22 | - Border colors
23 | - Overlay settings
24 |
25 | ## Tips
26 |
27 | - Consider color validation
28 | - Use default colors strategically
29 | - Document color usage
30 | - Consider accessibility
31 |
--------------------------------------------------------------------------------
/docs/features/field/date-picker/index.md:
--------------------------------------------------------------------------------
1 | # Date Picker Field
2 |
3 | The Date Picker field provides a calendar interface for selecting dates. It offers a user-friendly way to input and format dates consistently across your content.
4 |
5 | ## Key Features
6 |
7 | - Interactive calendar interface
8 | - Customizable date formats
9 | - Week starts on any day
10 | - Restrict date ranges
11 | - Multiple display formats
12 |
13 | ## Settings
14 |
15 | - Display Format - How the date appears to editors
16 | - Return Format - How the date is stored/returned
17 | - Week Starts On - Set first day of week
18 | - First Day - Configure week start day
19 |
--------------------------------------------------------------------------------
/docs/features/field/date-picker/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Date Picker Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Date Picker field
7 | 3. Configure options:
8 | - Set display format
9 | - Choose return format
10 | - Configure week start day
11 | - Set default value
12 |
13 | ## Common Use Cases
14 |
15 | 1. Event Management
16 | - Event dates
17 | - Scheduling
18 | - Deadlines
19 |
20 | 2. Content Planning
21 | - Publication dates
22 | - Campaign scheduling
23 | - Time-sensitive content
24 |
25 | ## Tips
26 |
27 | - Use consistent date formats
28 | - Consider timezone implications
29 | - Set appropriate restrictions
30 | - Use clear date formatting
31 |
--------------------------------------------------------------------------------
/docs/features/field/date-time-picker/index.md:
--------------------------------------------------------------------------------
1 | # Date Time Picker Field
2 |
3 | The Date Time Picker field combines date and time selection into a single interface. It provides precise control over datetime values with both calendar and time input options.
4 |
5 | ## Key Features
6 |
7 | - Combined date and time selection
8 | - Customizable date/time formats
9 | - Time increment control
10 | - Multiple display formats
11 | - Timezone support
12 |
13 | ## Settings
14 |
15 | - Display Format - How the datetime appears to editors
16 | - Return Format - How the datetime is stored/returned
17 | - Week Starts On - Set first day of week
18 | - Time Increment - Control minute stepping
19 |
--------------------------------------------------------------------------------
/docs/features/field/date-time-picker/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Date Time Picker Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Date Time Picker field
7 | 3. Configure options:
8 | - Set display format
9 | - Choose return format
10 | - Set time increment
11 | - Configure default value
12 |
13 | ## Common Use Cases
14 |
15 | 1. Event Scheduling
16 | - Event start/end times
17 | - Appointment booking
18 | - Session timing
19 |
20 | 2. Content Scheduling
21 | - Post scheduling
22 | - Time-based features
23 | - Automated tasks
24 |
25 | ## Tips
26 |
27 | - Consider time zone handling
28 | - Use appropriate time increments
29 | - Validate date ranges
30 | - Clear datetime formatting
31 |
--------------------------------------------------------------------------------
/docs/features/field/email/index.md:
--------------------------------------------------------------------------------
1 | # Email Field
2 |
3 | The Email field provides a specialized input for email addresses. It includes built-in validation to ensure proper email format and can be configured with custom display options.
4 |
5 | ## Key Features
6 |
7 | - Email format validation
8 | - Custom placeholder text
9 | - Prepend/append text options
10 | - Required field validation
11 | - Multiple email support
12 |
13 | ## Settings
14 |
15 | - Default Value - Set a default email address
16 | - Placeholder - Custom placeholder text
17 | - Prepend - Add text before the input
18 | - Append - Add text after the input
19 |
--------------------------------------------------------------------------------
/docs/features/field/email/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Email Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add an Email field
7 | 3. Configure options:
8 | - Set placeholder text
9 | - Add prepend/append text
10 | - Configure validation
11 | - Set default value
12 |
13 | ## Common Use Cases
14 |
15 | 1. Contact Information
16 | - Contact forms
17 | - User profiles
18 | - Directory listings
19 |
20 | 2. Notification Settings
21 | - Alert recipients
22 | - Newsletter subscriptions
23 | - System notifications
24 |
25 | ## Tips
26 |
27 | - Use clear validation messages
28 | - Consider multiple email support
29 | - Add helpful placeholder text
30 | - Validate email format
31 |
--------------------------------------------------------------------------------
/docs/features/field/file/index.md:
--------------------------------------------------------------------------------
1 | # File Field
2 |
3 | The File field enables file uploads and management through the WordPress media library. It supports various file types and provides flexible display options for the selected files.
4 |
5 | ## Key Features
6 |
7 | - Media library integration
8 | - File type restrictions
9 | - Size limitations
10 | - Custom return formats
11 | - Preview capabilities
12 |
13 | ## Settings
14 |
15 | - Library - Restrict to uploaded or all files
16 | - Return Format - Array, URL, or ID
17 | - Preview Size - Thumbnail display size
18 | - Min/Max Size - File size restrictions
19 | - Allowed File Types - Restrict accepted formats
20 |
--------------------------------------------------------------------------------
/docs/features/field/file/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the File Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a File field
7 | 3. Configure options:
8 | - Set allowed file types
9 | - Configure size limits
10 | - Choose library restriction
11 | - Set return format
12 |
13 | ## Common Use Cases
14 |
15 | 1. Document Management
16 | - PDF uploads
17 | - Document attachments
18 | - Resource libraries
19 |
20 | 2. Media Handling
21 | - Download files
22 | - Asset management
23 | - Resource linking
24 |
25 | ## Tips
26 |
27 | - Restrict file types appropriately
28 | - Set reasonable size limits
29 | - Consider storage implications
30 | - Use clear preview options
31 |
--------------------------------------------------------------------------------
/docs/features/field/flexible-content/index.md:
--------------------------------------------------------------------------------
1 | # Flexible Content Field
2 |
3 | The Flexible Content field provides a flexible content builder interface. It allows users to create dynamic layouts by selecting from predefined content block types and arranging them in any order.
4 |
5 | ## Key Features
6 |
7 | - Dynamic layout builder
8 | - Multiple layout types
9 | - Drag and drop ordering
10 | - Nested content structures
11 | - Customizable templates
12 |
13 | ## Settings
14 |
15 | - Layouts - Define available content block types
16 | - Button Label - Customize the "Add Row" text
17 | - Min/Max Layouts - Limit number of blocks
18 | - Layout Settings - Configure each layout type
19 |
--------------------------------------------------------------------------------
/docs/features/field/flexible-content/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Flexible Content Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Flexible Content field
7 | 3. Configure layouts:
8 | - Create layout types
9 | - Add fields to each layout
10 | - Set minimum/maximum
11 | - Configure button labels
12 |
13 | ## Common Use Cases
14 |
15 | 1. Page Building
16 | - Content sections
17 | - Landing pages
18 | - Dynamic layouts
19 |
20 | 2. Content Management
21 | - Article components
22 | - Product displays
23 | - Feature blocks
24 |
25 | ## Tips
26 |
27 | - Plan layouts carefully
28 | - Use clear layout labels
29 | - Consider nesting depth
30 | - Optimize for editors
31 |
--------------------------------------------------------------------------------
/docs/features/field/gallery/index.md:
--------------------------------------------------------------------------------
1 | # Gallery Field
2 |
3 | The Gallery field enables management of multiple images in a single field. It provides an intuitive interface for uploading, ordering, and managing collections of images.
4 |
5 | ## Key Features
6 |
7 | - Multiple image upload
8 | - Drag and drop ordering
9 | - Image previews
10 | - Bulk selection
11 | - Media library integration
12 |
13 | ## Settings
14 |
15 | - Library - Restrict to uploaded or all images
16 | - Min/Max Selection - Limit number of images
17 | - Preview Size - Thumbnail display size
18 | - Insert - Prepend or append new images
19 | - Return Format - Array, URL, or ID
20 |
--------------------------------------------------------------------------------
/docs/features/field/gallery/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Gallery Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Gallery field
7 | 3. Configure options:
8 | - Set image restrictions
9 | - Choose preview size
10 | - Configure min/max images
11 | - Set insert position
12 |
13 | ## Common Use Cases
14 |
15 | 1. Image Collections
16 | - Photo galleries
17 | - Product images
18 | - Portfolio displays
19 |
20 | 2. Media Management
21 | - Slideshows
22 | - Image grids
23 | - Media libraries
24 |
25 | ## Tips
26 |
27 | - Set appropriate image limits
28 | - Consider thumbnail sizes
29 | - Enable easy reordering
30 | - Optimize image sizes
31 |
--------------------------------------------------------------------------------
/docs/features/field/google-map/index.md:
--------------------------------------------------------------------------------
1 | # Google Map Field
2 |
3 | The Google Map field provides an interactive map interface for selecting and storing location data. It integrates with the Google Maps API to offer address search and precise location picking.
4 |
5 | ## Key Features
6 |
7 | - Interactive map interface
8 | - Address search functionality
9 | - Latitude/longitude selection
10 | - Custom map center point
11 | - Zoom level control
12 |
13 | ## Settings
14 |
15 | - Center Latitude - Default map center point
16 | - Center Longitude - Default map center point
17 | - Zoom Level - Default map zoom
18 | - Height - Map display height
19 | - Return Format - Location data format
20 |
--------------------------------------------------------------------------------
/docs/features/field/google-map/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Google Map Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Google Map field
7 | 3. Configure options:
8 | - Set default center point
9 | - Configure zoom level
10 | - Set map height
11 | - Choose display format
12 |
13 | ## Common Use Cases
14 |
15 | 1. Location Information
16 | - Business locations
17 | - Event venues
18 | - Contact pages
19 |
20 | 2. Geographic Data
21 | - Service areas
22 | - Delivery zones
23 | - Store locators
24 |
25 | ## Tips
26 |
27 | - Configure API key properly
28 | - Set appropriate zoom levels
29 | - Consider mobile display
30 | - Use clear location markers
31 |
--------------------------------------------------------------------------------
/docs/features/field/group/index.md:
--------------------------------------------------------------------------------
1 | # Group Field
2 |
3 | The Group field allows you to organize multiple fields together into a single data structure. It helps create logical groupings of related fields and simplifies data organization.
4 |
5 | ## Key Features
6 |
7 | - Group multiple fields together
8 | - Single data structure
9 | - Simplified data retrieval
10 | - Layout customization
11 | - Nested field support
12 |
13 | ## Settings
14 |
15 | - Sub Fields - Add fields within the group
16 | - Layout - Stack or table display format
17 | - Return Format - Group or individual field values
18 |
--------------------------------------------------------------------------------
/docs/features/field/group/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Group Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Group field
7 | 3. Configure sub-fields:
8 | - Add desired fields
9 | - Arrange field layout
10 | - Set labels
11 | - Choose return format
12 |
13 | ## Common Use Cases
14 |
15 | 1. Related Data Sets
16 | - Address information
17 | - Social media profiles
18 | - Contact details
19 |
20 | 2. Structured Content
21 | - Product specifications
22 | - Team member details
23 | - Feature sets
24 |
25 | ## Tips
26 |
27 | - Keep groups focused
28 | - Use clear labeling
29 | - Consider data structure
30 | - Plan field organization
31 |
--------------------------------------------------------------------------------
/docs/features/field/icon-picker/index.md:
--------------------------------------------------------------------------------
1 | # Icon Picker Field
2 |
3 | The Icon Picker field provides an interface for selecting icons from various sources including Dashicons, custom icon sets, or the media library.
4 |
5 | ## Key Features
6 |
7 | - Multiple icon source options
8 | - Dashicons integration
9 | - Media library support
10 | - URL input option
11 | - Visual icon preview
12 |
13 | ## Settings
14 |
15 | - Icon Library - Choose available icon sources
16 | - Return Format - Icon class, URL, or array
17 | - Preview Size - Icon display size
18 | - Allow Custom - Enable custom icon URLs
19 |
--------------------------------------------------------------------------------
/docs/features/field/icon-picker/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Icon Picker Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add an Icon Picker field
7 | 3. Configure options:
8 | - Select icon libraries
9 | - Set preview size
10 | - Configure return format
11 | - Enable custom URLs
12 |
13 | ## Common Use Cases
14 |
15 | 1. UI Elements
16 | - Menu icons
17 | - Feature indicators
18 | - Button symbols
19 |
20 | 2. Visual Content
21 | - Social media icons
22 | - Category markers
23 | - Navigation elements
24 |
25 | ## Tips
26 |
27 | - Maintain icon consistency
28 | - Consider icon sizing
29 | - Use clear previews
30 | - Document icon usage
31 |
--------------------------------------------------------------------------------
/docs/features/field/image/index.md:
--------------------------------------------------------------------------------
1 | # Image Field
2 |
3 | The Image field provides a dedicated interface for uploading and selecting images through the WordPress media library. It offers preview capabilities and multiple return format options.
4 |
5 | ## Key Features
6 |
7 | - Media library integration
8 | - Image preview
9 | - Size restrictions
10 | - Format validation
11 | - Multiple return formats
12 |
13 | ## Settings
14 |
15 | - Preview Size - Thumbnail display size
16 | - Library - Restrict to uploaded or all images
17 | - Min/Max Width/Height - Image dimension limits
18 | - File Size Restrictions - Control upload sizes
19 | - Return Format - Array, URL, or ID
20 |
--------------------------------------------------------------------------------
/docs/features/field/image/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Image Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add an Image field
7 | 3. Configure options:
8 | - Set preview size
9 | - Choose library type
10 | - Configure size limits
11 | - Set return format
12 |
13 | ## Common Use Cases
14 |
15 | 1. Content Images
16 | - Featured images
17 | - Article photos
18 | - Profile pictures
19 |
20 | 2. Design Elements
21 | - Background images
22 | - Logo uploads
23 | - Banner images
24 |
25 | ## Tips
26 |
27 | - Set appropriate size limits
28 | - Consider image dimensions
29 | - Use meaningful preview sizes
30 | - Plan for responsive display
31 |
--------------------------------------------------------------------------------
/docs/features/field/link/index.md:
--------------------------------------------------------------------------------
1 | # Link Field
2 |
3 | The Link field provides an interface for creating links with various properties. It allows users to select internal content, enter external URLs, and set link attributes.
4 |
5 | ## Key Features
6 |
7 | - Internal/external link support
8 | - Link text customization
9 | - Target attribute control
10 | - Internal content picker
11 | - WordPress link picker integration
12 |
13 | ## Settings
14 |
15 | - Return Format - Array or URL
16 | - Default Value - Preset link data
17 | - Display Format - How the link appears in admin
18 |
--------------------------------------------------------------------------------
/docs/features/field/link/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Link Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Link field
7 | 3. Configure options:
8 | - Choose return format
9 | - Set default value
10 | - Configure display
11 | - Enable/disable features
12 |
13 | ## Common Use Cases
14 |
15 | 1. Navigation Elements
16 | - Menu links
17 | - Call-to-actions
18 | - Resource links
19 |
20 | 2. Content References
21 | - Related content
22 | - External resources
23 | - Document links
24 |
25 | ## Tips
26 |
27 | - Validate URLs properly
28 | - Consider link targets
29 | - Use clear link text
30 | - Check for broken links
31 |
--------------------------------------------------------------------------------
/docs/features/field/message/index.md:
--------------------------------------------------------------------------------
1 | # Message Field
2 |
3 | The Message field displays instructional text or HTML content within the editing interface. It's useful for providing guidance, separating content sections, or displaying formatted information.
4 |
5 | ## Key Features
6 |
7 | - Custom HTML support
8 | - No data storage
9 | - Formatting options
10 | - Visual organization
11 | - Editor instructions
12 |
13 | ## Settings
14 |
15 | - Message - The content to display
16 | - New Lines - Handle line breaks
17 | - Escape HTML - Display HTML as text
18 | - Format - Text formatting options
19 |
--------------------------------------------------------------------------------
/docs/features/field/message/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Message Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Message field
7 | 3. Configure options:
8 | - Enter message content
9 | - Set formatting options
10 | - Configure HTML handling
11 | - Choose display style
12 |
13 | ## Common Use Cases
14 |
15 | 1. User Guidance
16 | - Field instructions
17 | - Section descriptions
18 | - Important notices
19 |
20 | 2. Content Organization
21 | - Section dividers
22 | - Group headers
23 | - Information blocks
24 |
25 | ## Tips
26 |
27 | - Keep messages concise
28 | - Use clear formatting
29 | - Consider visibility
30 | - Update content regularly
31 |
--------------------------------------------------------------------------------
/docs/features/field/nav_menu/index.md:
--------------------------------------------------------------------------------
1 | # Nav Menu Field
2 |
3 | The Nav Menu Field field provides a way to select nav menus and output them.
4 |
5 | ## Key Features
6 |
7 | - Different Return Value (Object, HTML, ID)
8 | - Different Menu Container (nav, div)
9 | - Ability to select no value
10 |
11 | ## Settings
12 |
13 | - Return Value
14 | - Menu Container
15 | - Allow Null?
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/features/field/number/index.md:
--------------------------------------------------------------------------------
1 | # Number Field
2 |
3 | The Number field provides an input specifically for numeric values. It includes validation and formatting options to ensure proper number handling.
4 |
5 | ## Key Features
6 |
7 | - Numeric validation
8 | - Min/max restrictions
9 | - Step increment control
10 | - Custom formatting
11 | - Prefix/suffix support
12 |
13 | ## Settings
14 |
15 | - Default Value - Preset number
16 | - Placeholder - Input placeholder text
17 | - Prepend - Text before the input
18 | - Append - Text after the input
19 | - Min - Minimum allowed value
20 | - Max - Maximum allowed value
21 | - Step - Number increment size
22 |
--------------------------------------------------------------------------------
/docs/features/field/number/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Number Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Number field
7 | 3. Configure options:
8 | - Set min/max values
9 | - Configure step size
10 | - Add placeholder text
11 | - Set default value
12 |
13 | ## Common Use Cases
14 |
15 | 1. Numeric Input
16 | - Quantities
17 | - Ratings
18 | - Measurements
19 |
20 | 2. Settings Control
21 | - Display options
22 | - Configuration values
23 | - Numeric parameters
24 |
25 | ## Tips
26 |
27 | - Set appropriate ranges
28 | - Use clear step intervals
29 | - Consider validation needs
30 | - Add helpful placeholders
31 |
--------------------------------------------------------------------------------
/docs/features/field/oembed/index.md:
--------------------------------------------------------------------------------
1 | # oEmbed Field
2 |
3 | The oEmbed field allows embedding external content from various providers like YouTube, Vimeo, and Twitter. It automatically handles the embedding process using WordPress's oEmbed functionality.
4 |
5 | ## Key Features
6 |
7 | - Support for multiple providers
8 | - Automatic embed handling
9 | - Preview capability
10 | - Width/height control
11 | - WordPress oEmbed integration
12 |
13 | ## Settings
14 |
15 | - Width - Maximum width of embedded content
16 | - Height - Maximum height of embedded content
17 | - Preview Size - Display size in admin
18 |
--------------------------------------------------------------------------------
/docs/features/field/oembed/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the oEmbed Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add an oEmbed field
7 | 3. Configure options:
8 | - Set width/height
9 | - Configure preview
10 | - Set display options
11 | - Choose providers
12 |
13 | ## Common Use Cases
14 |
15 | 1. Media Integration
16 | - Video embeds
17 | - Social media posts
18 | - Audio content
19 |
20 | 2. External Content
21 | - YouTube videos
22 | - Twitter posts
23 | - Spotify tracks
24 |
25 | ## Tips
26 |
27 | - Check provider compatibility
28 | - Consider responsive sizing
29 | - Test embed previews
30 | - Validate URLs properly
31 |
--------------------------------------------------------------------------------
/docs/features/field/page-link/index.md:
--------------------------------------------------------------------------------
1 | # Page Link Field
2 |
3 | The Page Link field provides an interface for creating links to internal WordPress content. It allows selection of posts, pages, and custom post types with search functionality.
4 |
5 | ## Key Features
6 |
7 | - Internal content linking
8 | - Multiple post type support
9 | - Search functionality
10 | - Archive URL support
11 | - Multiple selection option
12 |
13 | ## Settings
14 |
15 | - Post Type - Select available content types
16 | - Taxonomy - Filter by taxonomy terms
17 | - Allow Archives - Enable archive URL selection
18 | - Multiple Values - Allow multiple selections
19 | - Allow Null - Make selection optional
20 |
--------------------------------------------------------------------------------
/docs/features/field/page-link/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Page Link Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Page Link field
7 | 3. Configure options:
8 | - Select post types
9 | - Configure taxonomy filters
10 | - Set multiple selection
11 | - Enable/disable archives
12 |
13 | ## Common Use Cases
14 |
15 | 1. Internal Navigation
16 | - Related content
17 | - Section links
18 | - Menu structures
19 |
20 | 2. Content Relationships
21 | - Related posts
22 | - Resource links
23 | - Content hierarchy
24 |
25 | ## Tips
26 |
27 | - Use clear selection filters
28 | - Consider multiple selection needs
29 | - Test search functionality
30 | - Validate link targets
31 |
--------------------------------------------------------------------------------
/docs/features/field/password/index.md:
--------------------------------------------------------------------------------
1 | # Password Field
2 |
3 | The Password field provides a secure input for password data. It includes masking functionality and can be configured with various display options.
4 |
5 | ## Key Features
6 |
7 | - Masked input
8 | - Custom placeholder text
9 | - Prepend/append options
10 | - Basic password validation
11 | - Secure handling
12 |
13 | ## Settings
14 |
15 | - Placeholder - Input placeholder text
16 | - Prepend - Text before the input
17 | - Append - Text after the input
18 |
--------------------------------------------------------------------------------
/docs/features/field/password/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Password Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Password field
7 | 3. Configure options:
8 | - Set placeholder text
9 | - Add prepend/append
10 | - Configure validation
11 | - Set character limits
12 |
13 | ## Common Use Cases
14 |
15 | 1. Security Settings
16 | - API keys
17 | - Access tokens
18 | - Private credentials
19 |
20 | 2. User Management
21 | - Password fields
22 | - Security questions
23 | - Access codes
24 |
25 | ## Tips
26 |
27 | - Use secure handling
28 | - Clear validation rules
29 | - Consider masking options
30 | - Implement proper sanitization
31 |
--------------------------------------------------------------------------------
/docs/features/field/post-object/index.md:
--------------------------------------------------------------------------------
1 | # Post Object Field
2 |
3 | The Post Object field creates relationships with other WordPress posts, pages, or custom post types. It provides an intuitive interface for selecting and linking to other content.
4 |
5 | ## Key Features
6 |
7 | - Content relationship management
8 | - Multiple post type support
9 | - Advanced search functionality
10 | - Single or multiple selection
11 | - Bidirectional relationships
12 |
13 | ## Settings
14 |
15 | - Post Type - Select available content types
16 | - Taxonomy - Filter by taxonomy terms
17 | - Allow Null - Make selection optional
18 | - Multiple Values - Allow multiple selections
19 | - Return Format - Object, ID, or custom
20 |
--------------------------------------------------------------------------------
/docs/features/field/post-object/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Post Object Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Post Object field
7 | 3. Configure options:
8 | - Select post types
9 | - Set taxonomy filters
10 | - Configure multiple selection
11 | - Choose return format
12 |
13 | ## Common Use Cases
14 |
15 | 1. Content Relationships
16 | - Related posts
17 | - Parent/child content
18 | - Cross-references
19 |
20 | 2. Content Selection
21 | - Featured content
22 | - Resource lists
23 | - Content linking
24 |
25 | ## Tips
26 |
27 | - Use clear search filters
28 | - Consider relationship structure
29 | - Plan for scalability
30 | - Test search performance
31 |
--------------------------------------------------------------------------------
/docs/features/field/radio/index.md:
--------------------------------------------------------------------------------
1 | # Radio Field
2 |
3 | The Radio field presents users with a list of options where they can select a single choice. It provides a clear visual representation of available options.
4 |
5 | ## Key Features
6 |
7 | - Single option selection
8 | - Custom choice labels
9 | - Vertical or horizontal layout
10 | - Other/custom value option
11 | - Clear visual feedback
12 |
13 | ## Settings
14 |
15 | - Choices - Define available options
16 | - Default Value - Pre-selected option
17 | - Layout - Vertical or horizontal display
18 | - Allow Other - Enable custom value input
19 | - Return Format - Value or label
20 |
--------------------------------------------------------------------------------
/docs/features/field/radio/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Radio Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Radio field
7 | 3. Configure options:
8 | - Add choice options
9 | - Set layout format
10 | - Configure default value
11 | - Enable/disable features
12 |
13 | ## Common Use Cases
14 |
15 | 1. Single Choice Selection
16 | - Status options
17 | - Display preferences
18 | - Content types
19 |
20 | 2. Configuration Options
21 | - Layout choices
22 | - Setting selections
23 | - Display modes
24 |
25 | ## Tips
26 |
27 | - Keep options clear
28 | - Use logical ordering
29 | - Consider mobile layout
30 | - Provide clear labels
31 |
--------------------------------------------------------------------------------
/docs/features/field/range/index.md:
--------------------------------------------------------------------------------
1 | # Range Field
2 |
3 | The Range field provides a slider interface for selecting numeric values within a defined range. It offers an intuitive way to input numbers with visual feedback.
4 |
5 | ## Key Features
6 |
7 | - Slider interface
8 | - Min/max value limits
9 | - Step increment control
10 | - Visual value display
11 | - Prepend/append text
12 |
13 | ## Settings
14 |
15 | - Default Value - Starting position
16 | - Min - Minimum allowed value
17 | - Max - Maximum allowed value
18 | - Step - Value increment size
19 | - Prepend/Append - Add text before/after
20 |
--------------------------------------------------------------------------------
/docs/features/field/range/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Range Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Range field
7 | 3. Configure options:
8 | - Set min/max values
9 | - Configure step size
10 | - Add prepend/append text
11 | - Set default value
12 |
13 | ## Common Use Cases
14 |
15 | 1. Numeric Ranges
16 | - Volume controls
17 | - Percentage settings
18 | - Scale selections
19 |
20 | 2. Visual Settings
21 | - Opacity levels
22 | - Size adjustments
23 | - Intensity controls
24 |
25 | ## Tips
26 |
27 | - Set intuitive ranges
28 | - Use clear min/max values
29 | - Consider step granularity
30 | - Add helpful labels
31 |
--------------------------------------------------------------------------------
/docs/features/field/repeater/index.md:
--------------------------------------------------------------------------------
1 | # Repeater Field
2 |
3 | The Repeater field allows you to create a set of sub fields which can be repeated again and again.
4 |
5 | ## Key Features
6 |
7 | - Flexible row management
8 | - Multiple field types support
9 | - Nested repeater capability
10 | - Row reordering
11 | - Min/max rows control
12 |
13 | ## Settings
14 |
15 | - Sub Fields - Add fields to repeat
16 | - Minimum Rows - Set required rows
17 | - Maximum Rows - Limit total rows
18 | - Layout - Table or block display
19 | - Button Label - Customize add row text
20 |
--------------------------------------------------------------------------------
/docs/features/field/repeater/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Repeater Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Repeater field
7 | 3. Configure options:
8 | - Add sub fields
9 | - Set min/max rows
10 | - Choose layout style
11 | - Configure labels
12 |
13 | ## Common Use Cases
14 |
15 | 1. Dynamic Content
16 | - Social media links
17 | - Team members
18 | - Feature lists
19 |
20 | 2. Content Management
21 | - Gallery items
22 | - Related links
23 | - Service offerings
24 |
25 | ## Tips
26 |
27 | - Plan field structure carefully
28 | - Consider nesting depth
29 | - Use clear labels
30 | - Set appropriate limits
31 |
--------------------------------------------------------------------------------
/docs/features/field/select/index.md:
--------------------------------------------------------------------------------
1 | # Select Field
2 |
3 | The Select field provides a dropdown interface for selecting single or multiple options from a predefined list.
4 |
5 | ## Key Features
6 |
7 | - Single/multiple selection
8 | - Custom choices
9 | - Ajax loading support
10 | - Placeholder text
11 | - Conditional logic
12 |
13 | ## Settings
14 |
15 | - Choices - Define available options
16 | - Default Value - Set initial selection
17 | - Allow Null - Make selection optional
18 | - Multiple - Enable multiple selections
19 | - UI - Enhanced select interface
20 |
--------------------------------------------------------------------------------
/docs/features/field/select/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Select Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Select field
7 | 3. Configure options:
8 | - Add choice options
9 | - Set default value
10 | - Configure UI settings
11 | - Enable/disable features
12 |
13 | ## Common Use Cases
14 |
15 | 1. Option Selection
16 | - Status choices
17 | - Category selection
18 | - Preference settings
19 |
20 | 2. Data Filtering
21 | - View options
22 | - Content filtering
23 | - Display settings
24 |
25 | ## Tips
26 |
27 | - Use clear option labels
28 | - Consider grouping options
29 | - Enable search for long lists
30 | - Set meaningful defaults
31 |
--------------------------------------------------------------------------------
/docs/features/field/separator/index.md:
--------------------------------------------------------------------------------
1 | # Separator Field
2 |
3 | The Separator field provides visual separation between fields in the editing interface. It helps organize and structure field layouts.
4 |
5 | ## Key Features
6 |
7 | - Visual organization
8 | - Custom styling
9 | - Layout control
10 | - Group separation
11 | - Visual hierarchy
12 |
13 | ## Settings
14 |
15 | - Label - Optional separator text
16 | - Instructions - Field description
17 | - Wrapper - CSS class options
18 |
--------------------------------------------------------------------------------
/docs/features/field/separator/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Separator Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Separator field
7 | 3. Configure options:
8 | - Set label text
9 | - Add instructions
10 | - Style wrapper
11 | - Position field
12 |
13 | ## Common Use Cases
14 |
15 | 1. Content Organization
16 | - Section breaks
17 | - Field grouping
18 | - Visual hierarchy
19 |
20 | 2. Form Structure
21 | - Content sections
22 | - Logical breaks
23 | - Visual spacing
24 |
25 | ## Tips
26 |
27 | - Use clear labels
28 | - Keep consistent styling
29 | - Consider spacing
30 | - Group related fields
31 |
--------------------------------------------------------------------------------
/docs/features/field/tab/index.md:
--------------------------------------------------------------------------------
1 | # Tab Field
2 |
3 | The Tab field creates navigation tabs to organize fields into sections. It improves the editing interface by grouping related fields together.
4 |
5 | ## Key Features
6 |
7 | - Field organization
8 | - Visual navigation
9 | - Grouped content
10 | - Layout control
11 | - Conditional display
12 |
13 | ## Settings
14 |
15 | - Placement - Top/Left alignment
16 | - Endpoint - Tab section end
17 | - Label - Tab name
18 | - Instructions - Optional help text
19 |
--------------------------------------------------------------------------------
/docs/features/field/tab/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Tab Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Tab field
7 | 3. Configure options:
8 | - Set tab label
9 | - Choose placement
10 | - Set endpoint
11 | - Add instructions
12 |
13 | ## Common Use Cases
14 |
15 | 1. Content Organization
16 | - Content sections
17 | - Settings groups
18 | - Form organization
19 |
20 | 2. Interface Design
21 | - Complex forms
22 | - Settings panels
23 | - Data grouping
24 |
25 | ## Tips
26 |
27 | - Use clear tab labels
28 | - Group related fields
29 | - Consider tab order
30 | - Plan section breaks
31 |
--------------------------------------------------------------------------------
/docs/features/field/taxonomy/index.md:
--------------------------------------------------------------------------------
1 | # Taxonomy Field
2 |
3 | The Taxonomy field creates an interface for selecting taxonomy terms. It supports multiple selection methods and term management.
4 |
5 | ## Key Features
6 |
7 | - Term selection
8 | - Multiple display types
9 | - Term creation
10 | - Hierarchical support
11 | - Load on demand
12 |
13 | ## Settings
14 |
15 | - Taxonomy - Choose taxonomy
16 | - Appearance - Select UI style
17 | - Allow Create - Enable term creation
18 | - Load Terms - Auto-load options
19 | - Save Terms - Term relationships
20 |
--------------------------------------------------------------------------------
/docs/features/field/taxonomy/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Taxonomy Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Taxonomy field
7 | 3. Configure options:
8 | - Select taxonomy
9 | - Choose field type
10 | - Set load behavior
11 | - Configure saving
12 |
13 | ## Common Use Cases
14 |
15 | 1. Content Classification
16 | - Categories
17 | - Tags
18 | - Custom taxonomies
19 |
20 | 2. Term Management
21 | - Content organization
22 | - Filtering systems
23 | - Related content
24 |
25 | ## Tips
26 |
27 | - Choose appropriate UI
28 | - Consider term hierarchy
29 | - Enable term creation
30 | - Plan relationship structure
31 |
--------------------------------------------------------------------------------
/docs/features/field/text/index.md:
--------------------------------------------------------------------------------
1 | # Text Field
2 |
3 | The Text field provides a standard single-line text input with various formatting and validation options.
4 |
5 | ## Key Features
6 |
7 | - Text input
8 | - Character limits
9 | - Placeholder text
10 | - Prepend/append
11 | - Custom formatting
12 |
13 | ## Settings
14 |
15 | - Default Value - Preset text
16 | - Placeholder - Input helper text
17 | - Character Limit - Set max length
18 | - Prepend - Text before input
19 | - Append - Text after input
20 |
--------------------------------------------------------------------------------
/docs/features/field/text/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Text Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Text field
7 | 3. Configure options:
8 | - Set placeholder
9 | - Add character limits
10 | - Configure formatting
11 | - Set default value
12 |
13 | ## Common Use Cases
14 |
15 | 1. Basic Information
16 | - Titles
17 | - Names
18 | - Short descriptions
19 | - References
20 |
21 | 2. Form Elements
22 | - Input fields
23 | - Search boxes
24 | - Labels
25 | - Identifiers
26 |
27 | ## Tips
28 |
29 | - Use clear placeholders
30 | - Set appropriate limits
31 | - Consider validation
32 | - Use meaningful defaults
33 |
--------------------------------------------------------------------------------
/docs/features/field/textarea/index.md:
--------------------------------------------------------------------------------
1 | # Textarea Field
2 |
3 | The Textarea field provides a multi-line text input for longer content with formatting options and character limits.
4 |
5 | ## Key Features
6 |
7 | - Multi-line text input
8 | - Character counting
9 | - Rows configuration
10 | - New line handling
11 | - Placeholder support
12 |
13 | ## Settings
14 |
15 | - Default Value - Preset content
16 | - Placeholder - Helper text
17 | - Character Limit - Max length
18 | - Rows - Input height
19 | - New Lines - Handling options
20 |
--------------------------------------------------------------------------------
/docs/features/field/textarea/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Textarea Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Textarea field
7 | 3. Configure options:
8 | - Set rows
9 | - Add placeholder
10 | - Configure limits
11 | - Set line handling
12 |
13 | ## Common Use Cases
14 |
15 | 1. Long Text Content
16 | - Descriptions
17 | - Biographies
18 | - Instructions
19 | - Notes
20 |
21 | 2. Content Management
22 | - Excerpts
23 | - Summaries
24 | - Meta descriptions
25 | - Comments
26 |
27 | ## Tips
28 |
29 | - Set appropriate height
30 | - Consider word limits
31 | - Use clear placeholders
32 | - Plan for formatting
33 |
--------------------------------------------------------------------------------
/docs/features/field/time-picker/index.md:
--------------------------------------------------------------------------------
1 | # Time Picker Field
2 |
3 | The Time Picker field provides an interface for selecting time values with customizable display and increment options.
4 |
5 | ## Key Features
6 |
7 | - Time selection
8 | - Format options
9 | - Step intervals
10 | - Range limits
11 | - Display customization
12 |
13 | ## Settings
14 |
15 | - Display Format - Time format
16 | - Return Format - Data format
17 | - Time Increment - Minute steps
18 | - Placeholder - Helper text
19 | - Default Value - Preset time
20 |
--------------------------------------------------------------------------------
/docs/features/field/time-picker/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the Time Picker Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a Time Picker field
7 | 3. Configure options:
8 | - Set time format
9 | - Choose increment
10 | - Set default time
11 | - Configure display
12 |
13 | ## Common Use Cases
14 |
15 | 1. Schedule Management
16 | - Event times
17 | - Opening hours
18 | - Appointment slots
19 |
20 | 2. Time Settings
21 | - Scheduling
22 | - Time restrictions
23 | - Operating hours
24 |
25 | ## Tips
26 |
27 | - Use consistent formats
28 | - Set appropriate steps
29 | - Consider time zones
30 | - Plan for validation
31 |
--------------------------------------------------------------------------------
/docs/features/field/true-false/index.md:
--------------------------------------------------------------------------------
1 | # True/False Field
2 |
3 | The True/False field provides a simple toggle switch for boolean values. It offers a clean interface for yes/no choices.
4 |
5 | ## Key Features
6 |
7 | - Toggle interface
8 | - Custom labels
9 | - Default state
10 | - Message display
11 | - UI customization
12 |
13 | ## Settings
14 |
15 | - Message - Field description
16 | - Default Value - Initial state
17 | - On Text - Custom label
18 | - Off Text - Custom label
19 | - UI - Style options
20 |
--------------------------------------------------------------------------------
/docs/features/field/true-false/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the True/False Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a True/False field
7 | 3. Configure options:
8 | - Set message
9 | - Choose default
10 | - Configure labels
11 | - Style interface
12 |
13 | ## Common Use Cases
14 |
15 | 1. Simple Toggles
16 | - Feature flags
17 | - Display options
18 | - Status switches
19 |
20 | 2. Settings Control
21 | - Visibility settings
22 | - Enable/disable
23 | - Option toggles
24 |
25 | ## Tips
26 |
27 | - Use clear labels
28 | - Set logical defaults
29 | - Consider UI placement
30 | - Plan conditional logic
31 |
--------------------------------------------------------------------------------
/docs/features/field/url/index.md:
--------------------------------------------------------------------------------
1 | # URL Field
2 |
3 | The URL field provides input for web addresses with validation and formatting options. It ensures proper URL format and structure.
4 |
5 | ## Key Features
6 |
7 | - URL validation
8 | - Protocol handling
9 | - Placeholder text
10 | - Custom formatting
11 | - Link preview
12 |
13 | ## Settings
14 |
15 | - Default Value - Preset URL
16 | - Placeholder - Helper text
17 | - Protocol - Required/optional
18 | - Return Format - URL structure
19 |
--------------------------------------------------------------------------------
/docs/features/field/url/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the URL Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a URL field
7 | 3. Configure options:
8 | - Set placeholder
9 | - Configure protocol
10 | - Set validation
11 | - Choose format
12 |
13 | ## Common Use Cases
14 |
15 | 1. Web Links
16 | - Website URLs
17 | - Social profiles
18 | - Resource links
19 |
20 | 2. Reference Links
21 | - Documentation
22 | - External content
23 | - Media sources
24 |
25 | ## Tips
26 |
27 | - Validate URLs properly
28 | - Consider protocols
29 | - Use clear placeholders
30 | - Check link validity
31 |
--------------------------------------------------------------------------------
/docs/features/field/user/index.md:
--------------------------------------------------------------------------------
1 | # User Field
2 |
3 | The User field creates an interface for selecting WordPress users. It supports multiple selection methods and user filtering.
4 |
5 | ## Key Features
6 |
7 | - User selection
8 | - Role filtering
9 | - Multiple formats
10 | - Search capability
11 | - Multiple selection
12 |
13 | ## Settings
14 |
15 | - Roles - Filter by role
16 | - Allow Null - Optional selection
17 | - Multiple - Enable multiple
18 | - Return Format - Object/ID/Array
19 | - Filter - User query args
20 |
--------------------------------------------------------------------------------
/docs/features/field/user/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the User Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a User field
7 | 3. Configure options:
8 | - Select roles
9 | - Set return format
10 | - Configure multiple
11 | - Set filters
12 |
13 | ## Common Use Cases
14 |
15 | 1. User Assignment
16 | - Author selection
17 | - Team members
18 | - User permissions
19 |
20 | 2. User Relations
21 | - Content ownership
22 | - User groups
23 | - Access control
24 |
25 | ## Tips
26 |
27 | - Filter appropriate roles
28 | - Consider permissions
29 | - Use clear search
30 | - Plan user structure
31 |
--------------------------------------------------------------------------------
/docs/features/field/wysiwyg/index.md:
--------------------------------------------------------------------------------
1 | # WYSIWYG Field
2 |
3 | The WYSIWYG (What You See Is What You Get) field provides a rich text editor with formatting tools and media integration.
4 |
5 | ## Key Features
6 |
7 | - Rich text editing
8 | - Media integration
9 | - Toolbar customization
10 | - HTML handling
11 | - Editor styles
12 |
13 | ## Settings
14 |
15 | - Toolbar - Editor tools
16 | - Media Upload - Enable/disable
17 | - Tabs - Visual/Text tabs
18 | - Height - Editor height
19 | - Default Value - Initial content
20 |
--------------------------------------------------------------------------------
/docs/features/field/wysiwyg/tutorial.md:
--------------------------------------------------------------------------------
1 | # Using the WYSIWYG Field
2 |
3 | ## Basic Setup
4 |
5 | 1. Create a new Field Group
6 | 2. Add a WYSIWYG field
7 | 3. Configure options:
8 | - Choose toolbar
9 | - Set media options
10 | - Configure height
11 | - Set defaults
12 |
13 | ## Common Use Cases
14 |
15 | 1. Rich Content
16 | - Post content
17 | - Product descriptions
18 | - Page sections
19 |
20 | 2. Formatted Text
21 | - Documentation
22 | - Guidelines
23 | - Formatted messages
24 |
25 | ## Tips
26 |
27 | - Configure appropriate tools
28 | - Consider media handling
29 | - Plan content structure
30 | - Set consistent styling
31 |
--------------------------------------------------------------------------------
/docs/features/post-types.md:
--------------------------------------------------------------------------------
1 | # Custom Post Types
2 |
3 | Learn how to create and manage custom post types with SCF.
4 |
5 | ## Creating Post Types
6 |
7 | ### Basic Usage
8 |
9 | Create a custom post type through the admin interface:
10 |
11 | 1. Navigate to Custom Fields → Post Types
12 | 2. Click "Add New"
13 | 3. Configure basic settings
14 | 4. Save and publish
15 |
16 | ### Advanced Configuration
17 |
18 | - **Capabilities**: Set custom capabilities for managing posts
19 | - **REST API**: Enable and configure REST API support
20 | - **Archive Pages**: Configure archive behavior and permalinks
21 | - **Custom Permalinks**: Set up SEO-friendly URL structures
22 |
23 | ## Best Practices
24 |
25 | 1. Choose descriptive post type names
26 | 2. Configure proper labels for better UX
27 | 3. Plan taxonomy relationships
28 | 4. Consider permalink structure
29 | 5. Set appropriate capabilities
30 |
31 | ## Examples
32 |
33 | Common use cases for custom post types:
34 |
35 | - Products
36 | - Team Members
37 | - Portfolio Items
38 | - Testimonials
39 | - Events
40 |
--------------------------------------------------------------------------------
/docs/features/scf-api.md:
--------------------------------------------------------------------------------
1 | # API Reference
2 |
3 | The Secure Custom Fields API provides programmatic access to field data and plugin functionality.
4 |
5 | ## Core Functions
6 |
7 | ### Field Operations
8 |
9 | - Get field values
10 | - Update field data
11 | - Delete field content
12 | - Check field existence
13 |
14 | ### Post Type Management
15 |
16 | - Register post types
17 | - Modify post type settings
18 | - Handle custom capabilities
19 | - Manage taxonomies
20 |
21 | ## Integration Points
22 |
23 | 1. **WordPress Core**
24 | - Post type registration
25 | - Taxonomy integration
26 | - Capability handling
27 |
28 | 2. **Theme Integration**
29 | - Template functions
30 | - Conditional tags
31 | - Layout helpers
32 |
33 | 3. **Plugin Compatibility**
34 | - REST API support
35 | - Cache integration
36 | - Query modifications
37 |
38 | ## Best Practices
39 |
40 | 1. Always sanitize input
41 | 2. Validate data types
42 | 3. Use proper escaping
43 | 4. Check capabilities
44 | 5. Follow WordPress coding standards
45 |
--------------------------------------------------------------------------------
/docs/tutorials/first-post-type.md:
--------------------------------------------------------------------------------
1 | # Creating Your First Post Type
2 |
3 | A step-by-step guide to creating a custom post type using Secure Custom Fields.
4 |
5 | ## Prerequisites
6 |
7 | - SCF installed and activated
8 | - Administrator access to WordPress
9 | - Basic understanding of WordPress concepts
10 |
11 | ## Steps
12 |
13 | 1. **Access the Admin Panel**
14 | - Navigate to Custom Fields → Post Types
15 | - Click "Add New"
16 |
17 | 2. **Basic Configuration**
18 | - Enter a descriptive name
19 | - Configure labels
20 | - Set visibility options
21 |
22 | 3. **Advanced Settings**
23 | - Configure permalinks
24 | - Set up taxonomies
25 | - Define capabilities
26 |
27 | 4. **Testing**
28 | - Save your post type
29 | - Create a test post
30 | - View on front end
31 |
32 | ## Next Steps
33 |
34 | - Add custom fields to your post type
35 | - Configure archive displays
36 | - Set up custom taxonomies
37 |
--------------------------------------------------------------------------------
/docs/tutorials/index.md:
--------------------------------------------------------------------------------
1 | # Tutorials
2 |
3 | Step-by-step guides for working with Secure Custom Fields.
4 |
5 | ## Getting Started
6 |
7 | - [Creating Your First Post Type](first-post-type) - Basic post type setup
8 | - [Field Group Basics](field-group-basics) - Creating and configuring field groups
9 | - [Working with Fields](working-with-fields) - Using different field types
10 |
11 | ## Advanced Topics
12 |
13 | - Custom Field Validation
14 | - Complex Layouts with Flexible Content
15 | - Advanced Post Type Configuration
16 | - REST API Integration
17 |
18 | ## Best Practices
19 |
20 | Each tutorial follows these principles:
21 |
22 | - Clear step-by-step instructions
23 | - Practical examples
24 | - Security considerations
25 | - Performance optimization tips
26 |
--------------------------------------------------------------------------------
/docs/welcome/quick-start.md:
--------------------------------------------------------------------------------
1 | # Quick Start Guide
2 |
3 | This guide will help you create your first custom field group with Secure Custom Fields.
4 |
5 | ## Creating a Field Group
6 |
7 | 1. Navigate to Custom Fields → Add New
8 | 2. Enter a title for your field group
9 | 3. Click "Add Field"
10 | 4. Choose a field type
11 | 5. Configure the field settings
12 | 6. Set the location rules
13 | 7. Save the field group
14 |
15 | ## Example: Author Bio
16 |
17 | Let's create a simple author bio field group:
18 |
19 | 1. Create a new field group called "Author Profile"
20 | 2. Add these fields:
21 | - Profile Image (Image field)
22 | - Bio (Textarea field)
23 | - Social Links (Repeater field)
24 | 3. Set location to "User Form"
25 | 4. Save and test
26 |
27 | ## Next Steps
28 |
29 | - Learn about [field types](../features/fields)
30 | - Explore [advanced features](../features/README)
31 | - Read the [security guidelines](../concepts/security)
32 |
--------------------------------------------------------------------------------
/includes/Meta/Comment.php:
--------------------------------------------------------------------------------
1 | get_page_templates( null, $post_type );
28 | if ( $templates ) {
29 | $post_templates[ $post_type ] = $templates;
30 | }
31 | }
32 | }
33 |
34 | // Update store.
35 | acf_set_data( 'post_templates', $post_templates );
36 |
37 | // Return templates.
38 | return $post_templates;
39 | }
40 |
--------------------------------------------------------------------------------
/includes/admin/beta-features/class-scf-beta-feature-editor-sidebar.php:
--------------------------------------------------------------------------------
1 | name = 'editor_sidebar';
34 | $this->title = __( 'Move Elements to Editor Sidebar', 'secure-custom-fields' );
35 | $this->description = __( 'Moves field group elements to the editor sidebar for a cleaner interface.', 'secure-custom-fields' );
36 | }
37 | }
38 | endif;
39 |
--------------------------------------------------------------------------------
/includes/admin/beta-features/index.php:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
 ); ?>)
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/includes/admin/views/acf-field-group/location-group.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | $rule ) :
9 |
10 | // validate rule
11 | $rule = acf_validate_location_rule( $rule );
12 |
13 | // append id and group
14 | $rule['id'] = "rule_{$i}";
15 | $rule['group'] = $group_id;
16 |
17 | // view
18 | acf_get_view(
19 | 'acf-field-group/location-rule',
20 | array(
21 | 'rule' => $rule,
22 | )
23 | );
24 | endforeach;
25 | ?>
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/includes/admin/views/acf-post-type/index.php:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
 ); ?>)
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/includes/admin/views/acf-taxonomy/index.php:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
 ); ?>)
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/includes/admin/views/acf-ui-options-page/list-empty.php:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
 ); ?>)
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/includes/admin/views/global/header.php:
--------------------------------------------------------------------------------
1 | labels->name;
15 | }
16 | if ( $page_title ) {
17 | ?>
18 |
39 |
40 |
--------------------------------------------------------------------------------
/includes/admin/views/global/index.php:
--------------------------------------------------------------------------------
1 |
11 |
22 |
--------------------------------------------------------------------------------
/includes/admin/views/upgrade/index.php:
--------------------------------------------------------------------------------
1 | name = 'output';
20 | $this->label = 'output';
21 | $this->public = false;
22 | $this->defaults = array(
23 | 'html' => false,
24 | );
25 | }
26 |
27 |
28 | /**
29 | * The render field call. Deprecated since ACF 6.3.2.
30 | *
31 | * @param array $field The $field being edited
32 | * @return false
33 | */
34 | public function render_field( $field ) {
35 |
36 | // Deprecated since ACF 6.3.2 and will be removed in a future release.
37 | _deprecated_function( __FUNCTION__, '6.3.2' );
38 | return false;
39 | }
40 | }
41 |
42 |
43 | // initialize
44 | acf_register_field_type( 'acf_field_output' );
45 | endif; // class_exists check
46 |
--------------------------------------------------------------------------------
/includes/fields/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | .
6 |
7 |
8 | ./tests
9 | ./vendor
10 | ./node_modules
11 | ./wordpress
12 |
13 |
14 |
15 |
16 | ./tests/php/
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@playwright/test';
2 |
3 | const baseConfig = require( '@wordpress/scripts/config/playwright.config.js' );
4 | const config = defineConfig( {
5 | ...baseConfig,
6 | testDir: './tests/e2e',
7 | } );
8 | export default config;
--------------------------------------------------------------------------------
/pro/README.md:
--------------------------------------------------------------------------------
1 | This directory remains to ensure compatability with plugins that extend ACF Pro and may check for or include any of these files directly.
--------------------------------------------------------------------------------
/pro/acf-pro.php:
--------------------------------------------------------------------------------
1 |
15 | Movie title:
--------------------------------------------------------------------------------
/tests/e2e/plugins/scf-test-get-field-comment.php:
--------------------------------------------------------------------------------
1 | Comment title: ' . $field . '';
29 | }
30 |
31 | return '';
32 | }
33 |
34 | add_filter( 'comment_text', 'scf_add_get_field_at_the_end_comment', 10, 2 );
35 |
--------------------------------------------------------------------------------
/tests/e2e/plugins/scf-test-get-field-option.php:
--------------------------------------------------------------------------------
1 | Option title: ' . $field . '';
26 | }
27 |
28 | return '';
29 | }
30 |
31 | add_filter( 'the_content', 'scf_add_get_field_at_the_end_option' );
32 |
--------------------------------------------------------------------------------
/tests/e2e/plugins/scf-test-get-field-scf-block.php:
--------------------------------------------------------------------------------
1 | Term title: ' . $field . '';
28 | }
29 |
30 | return '';
31 | }
32 |
33 | add_filter( 'the_content', 'scf_add_get_field_at_the_end_option' );
34 |
--------------------------------------------------------------------------------
/tests/e2e/plugins/scf-test-get-field-user.php:
--------------------------------------------------------------------------------
1 | User title: ' . $field . '';
27 | }
28 |
29 | return '';
30 | }
31 |
32 | add_filter( 'the_content', 'scf_add_get_field_at_the_end_option' );
33 |
--------------------------------------------------------------------------------
/tests/e2e/plugins/scf-test-get-field.php:
--------------------------------------------------------------------------------
1 | Movie title: ' . $field . '';
25 | }
26 |
27 | return '';
28 | }
29 |
30 | add_filter( 'the_content', 'scf_add_get_field_at_the_end' );
31 |
--------------------------------------------------------------------------------
/tests/php/bootstrap.php:
--------------------------------------------------------------------------------
1 | assertTrue( class_exists( 'ACF' ), 'ACF class should exist' );
20 | }
21 |
22 | /**
23 | * Test if ACF instance is available
24 | */
25 | public function test_acf_instance_available() {
26 | $acf = acf();
27 | $this->assertInstanceOf( 'ACF', $acf, 'ACF instance should be available via acf() function' );
28 | }
29 |
30 | /**
31 | * Test if ACF version is defined
32 | */
33 | public function test_acf_version_defined() {
34 | $acf = acf();
35 | $this->assertNotEmpty( $acf->version, 'ACF version should be defined' );
36 | }
37 | }
38 |
--------------------------------------------------------------------------------