diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml index 5015d7bf..75bba15a 100644 --- a/.github/workflows/phpcs.yml +++ b/.github/workflows/phpcs.yml @@ -14,7 +14,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: '8.1' + php-version: '8.4' tools: composer:v2 - name: Install Dependencies diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 00000000..102fbf6b --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,38 @@ +{ + "default": true, + "MD013": false, + "MD024": false, + "MD033": { + "allowed_elements": [ + "br", + "img", + "video", + "details", + "summary" + ] + }, + "no-inline-html": { + "allowed_elements": [ + "br", + "kbd", + "sup" + ] + }, + "first-line-h1": false, + "commands-show-output": false, + "code-block-style": false, + "no-duplicate-heading": { + "siblings_only": true + }, + "no-trailing-punctuation": { + "punctuation": ".,;:!" + }, + "ol-prefix": { + "style": "ordered" + }, + "fenced-code-language": true, + "ignores": [ + "vendor/**", + "node_modules/**" + ] +} \ No newline at end of file diff --git a/composer.json b/composer.json index d7d4a824..67fde64e 100644 --- a/composer.json +++ b/composer.json @@ -16,12 +16,22 @@ "require-dev": { "wp-coding-standards/wpcs": "^3.0", "phpcompatibility/phpcompatibility-wp": "^2.1", - "sirbrillig/phpcs-changed": "^2.11" + "sirbrillig/phpcs-changed": "^2.11", + "nikic/php-parser": "^4.0", + "symfony/finder": "^5.0|^6.0" }, "scripts": { - "docs-manifest": "php docs/bin/generate-manifest.php", + "docs:manifest": "php docs/bin/generate-manifest.php", + "docs:links": "php docs/bin/update-markdown-links.php", + "docs:parse": "php docs/bin/generate-parsed-md.php --output=${DOCS_OUTPUT_DIR:-docs/code-reference}", + "docs:fix": "npm run fix:md", + "docs:lint": "npm run lint:md", "docs": [ - "@docs-manifest" + "@docs:parse", + "@docs:links", + "@docs:fix", + "@docs:lint", + "@docs:manifest" ] } } diff --git a/composer.lock b/composer.lock index 7ba3885e..7a211d51 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0bb833be87c3ffe2c1cb6be003952af5", + "content-hash": "fa6658052cff5c13233b3b5419d42a08", "packages": [], "packages-dev": [ { @@ -85,6 +85,62 @@ }, "time": "2023-01-05T11:28:13+00:00" }, + { + "name": "nikic/php-parser", + "version": "v4.19.4", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" + }, + "time": "2024-09-29T15:01:53+00:00" + }, { "name": "phpcompatibility/php-compatibility", "version": "9.3.5", @@ -593,6 +649,70 @@ ], "time": "2025-01-23T17:04:15+00:00" }, + { + "name": "symfony/finder", + "version": "v6.4.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.17" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-29T13:51:37+00:00" + }, { "name": "wp-coding-standards/wpcs", "version": "3.1.0", diff --git a/docs/bin/generate-parsed-md.php b/docs/bin/generate-parsed-md.php new file mode 100644 index 00000000..0312d5dd --- /dev/null +++ b/docs/bin/generate-parsed-md.php @@ -0,0 +1,677 @@ +#!/usr/bin/env php +<?php +/** + * Generate parsed markdown documentation from PHP source files. + * + * @package wordpress/secure-custom-fields + */ + +namespace WordPress\SCF\Docs; + +// phpcs:disable WordPress.WP.AlternativeFunctions + +require dirname( dirname( __DIR__ ) ) . '/vendor/autoload.php'; + +use PhpParser\{ParserFactory, NodeTraverser, Node, Node\Stmt\Class_}; +use PhpParser\NodeVisitor\NameResolver; +use Symfony\Component\Finder\Finder; + +/** + * Documentation generator class that parses PHP files and generates markdown. + */ +class DocGenerator { + /** + * PHP Parser instance. + * + * @var ParserFactory + */ + private $parser; + + /** + * Node traverser instance. + * + * @var NodeTraverser + */ + private $traverser; + + /** + * Output directory path. + * + * @var string + */ + private $output_dir; + + /** + * Files organized by directory. + * + * @var array + */ + private $files_by_directory = array(); + + /** + * WordPress hook functions to document. + * + * @var array + */ + private $hook_functions = array( + 'do_action', + 'do_action_ref_array', + 'do_action_deprecated', + 'apply_filters', + 'apply_filters_ref_array', + 'apply_filters_deprecated', + ); + + /** + * Mapping of hook functions to their types. + * + * @var array + */ + private $hook_type_map = array( + 'do_action' => 'action', + 'do_action_ref_array' => 'action', + 'do_action_deprecated' => 'deprecated', + 'apply_filters' => 'filter', + 'apply_filters_ref_array' => 'filter', + 'apply_filters_deprecated' => 'deprecated', + ); + + /** + * Tracks undocumented code elements. + * + * @var array + */ + private $undocumented_elements = array(); + + /** + * File suffix and extension constants. + */ + private const FILE_SUFFIX = '-file'; + private const MD_EXT = '.md'; + private const PHP_EXT = '.php'; + + /** + * Constructor. + * + * @param string $output_dir Directory where documentation will be generated. + */ + public function __construct( $output_dir ) { + $this->parser = ( new ParserFactory() )->create( ParserFactory::PREFER_PHP7 ); + $this->traverser = new NodeTraverser(); + $this->traverser->addVisitor( new NameResolver() ); + $this->output_dir = rtrim( $output_dir, '/' ); + + // Clean up existing documentation + if ( is_dir( $this->output_dir ) ) { + $this->cleanup_directory( $this->output_dir ); + } + + if ( ! is_dir( $this->output_dir ) ) { + mkdir( $this->output_dir, 0755, true ); + } + } + + /** + * Recursively remove all files and subdirectories from a directory. + * + * @param string $dir Directory path to clean. + */ + private function cleanup_directory( $dir ) { + $files = array_diff( scandir( $dir ), array( '.', '..' ) ); + + foreach ( $files as $file ) { + $path = $dir . '/' . $file; + if ( is_dir( $path ) ) { + $this->cleanup_directory( $path ); + rmdir( $path ); + } else { + unlink( $path ); + } + } + } + + /** + * Generate documentation for all PHP files. + */ + public function generate() { + $finder = new Finder(); + $finder->files() + ->name( '*.php' ) + ->in( dirname( dirname( __DIR__ ) ) . '/includes' ) + ->exclude( 'vendor' ); + + foreach ( $finder as $file ) { + $this->process_file( $file ); + } + + // Generate META.md with undocumented elements + $this->generate_meta_file(); + + // After processing all files, generate index files + $this->generate_index_files(); + } + + /** + * Process a single PHP file to extract documentation. + * + * @param \Symfony\Component\Finder\SplFileInfo $file The file to process. + */ + private function process_file( $file ) { + $code = file_get_contents( $file->getRealPath() ); + $ast = $this->parser->parse( $code ); + + if ( ! $ast ) { + return; + } + + // Track relative path for undocumented elements + $relative_path = str_replace( + dirname( dirname( __DIR__ ) ) . '/includes/', + '', + $file->getRealPath() + ); + + $docs = $this->extract_docs( $ast, $relative_path ); + if ( $docs ) { + $this->save_markdown( $file, $docs ); + } + } + + /** + * Extract documentation from an AST. + * + * @param array $ast The PHP Parser AST. + * @param string $file_path The relative path to the file being processed. + * @return array Extracted documentation organized by type. + */ + private function extract_docs( array $ast, $file_path ) { + $docs = array(); + + foreach ( $ast as $node ) { + // Handle standalone functions + if ( $node instanceof Node\Stmt\Function_ ) { + if ( ! isset( $docs['functions'] ) ) { + $docs['functions'] = array(); + } + $doc = $node->getDocComment(); + if ( $doc ) { + $docs['functions'][ $node->name->toString() ] = $this->format_doc_block( $doc ); + } else { + // Track undocumented function + $this->track_undocumented( $file_path, 'function', $node->name->toString() ); + } + } + // Handle classes + if ( $node instanceof Node\Stmt\Class_ ) { + $docs['class'] = $this->extract_class_docs( $node, $file_path ); + } + // Handle hooks + $hooks = $this->extract_hooks( $node, $file_path ); + if ( ! empty( $hooks ) ) { + if ( ! isset( $docs['hooks'] ) ) { + $docs['hooks'] = array(); + } + $docs['hooks'] = array_merge( $docs['hooks'], $hooks ); + } + } + + return $docs; + } + + /** + * Extract documentation from a class node. + * + * @param Node\Stmt\Class_ $node The class node. + * @param string $file_path The relative path to the file. + * @return array Class documentation including properties and methods. + */ + private function extract_class_docs( Node\Stmt\Class_ $node, $file_path ) { + $doc = $node->getDocComment(); + if ( ! $doc ) { + $this->track_undocumented( $file_path, 'class', $node->name->toString() ); + } + + $docs = array( + 'name' => $node->name->toString(), + 'doc' => $doc ? $this->format_doc_block( $doc ) : '', + 'properties' => $this->extract_property_docs( $node, $file_path ), + 'methods' => $this->extract_method_docs( $node, $file_path ), + ); + + return $docs; + } + + /** + * Extract documentation from class properties. + * + * @param Node\Stmt\Class_ $node The class node. + * @param string $file_path The relative path to the file. + * @return array Property documentation keyed by property name. + */ + private function extract_property_docs( Node\Stmt\Class_ $node, $file_path ) { + $properties = array(); + + foreach ( $node->getProperties() as $property ) { + $doc = $property->getDocComment(); + if ( $doc ) { + foreach ( $property->props as $prop ) { + $properties[ $prop->name->toString() ] = $this->format_doc_block( $doc ); + } + } else { + foreach ( $property->props as $prop ) { + $this->track_undocumented( $file_path, 'property', $prop->name->toString() ); + } + } + } + + return $properties; + } + + /** + * Extract documentation from class methods. + * + * @param Node\Stmt\Class_ $node The class node. + * @param string $file_path The relative path to the file. + * @return array Method documentation keyed by method name. + */ + private function extract_method_docs( Node\Stmt\Class_ $node, $file_path ) { + $methods = array(); + + foreach ( $node->getMethods() as $method ) { + $doc = $method->getDocComment(); + if ( $doc ) { + $methods[ $method->name->toString() ] = $this->format_doc_block( $doc ); + } else { + $this->track_undocumented( $file_path, 'method', $method->name->toString() ); + } + } + + return $methods; + } + + /** + * Extract WordPress hooks from an AST node. + * + * @param Node $node The AST node to check. + * @param string $file_path The relative path to the file. + * @return array Extracted hook documentation. + */ + private function extract_hooks( $node, $file_path ) { + $hooks = array(); + + if ( $node instanceof Node\Expr\FuncCall && $node->name instanceof Node\Name ) { + $function_name = $node->name->toString(); + + if ( in_array( $function_name, $this->hook_functions, true ) ) { + if ( isset( $node->args[0] ) && $node->args[0]->value instanceof Node\Scalar\String_ ) { + $hook_name = $node->args[0]->value->value; + $doc = ''; + if ( $node->getAttribute( 'comments' ) ) { + foreach ( $node->getAttribute( 'comments' ) as $comment ) { + if ( $comment instanceof \PhpParser\Comment\Doc ) { + $doc = $this->format_doc_block( $comment ); + break; + } + } + } + + if ( ! $doc ) { + $this->track_undocumented( $file_path, 'hook', $hook_name ); + } + + $hooks[] = array( + 'type' => $this->hook_type_map[ $function_name ], + 'name' => $hook_name, + 'doc' => $doc, + 'function' => $function_name, + ); + } + } + } + + // Recursively check child nodes + foreach ( $node->getSubNodeNames() as $node_name ) { + $sub_node = $node->$node_name; + if ( $sub_node instanceof Node || is_array( $sub_node ) ) { + if ( is_array( $sub_node ) ) { + foreach ( $sub_node as $sub_sub_node ) { + if ( $sub_sub_node instanceof Node ) { + $hooks = array_merge( $hooks, $this->extract_hooks( $sub_sub_node, $file_path ) ); + } + } + } else { + $hooks = array_merge( $hooks, $this->extract_hooks( $sub_node, $file_path ) ); + } + } + } + + return $hooks; + } + + /** + * Format a docblock comment by removing comment markers. + * + * @param \PhpParser\Comment\Doc $doc The docblock comment. + * @return string Cleaned documentation text. + */ + private function format_doc_block( $doc ) { + $text = $doc->getText(); + // Clean up the doc block + $text = preg_replace( '/^\s*\/\*\*\s*/m', '', $text ); + $text = preg_replace( '/^\s*\*\s*/m', '', $text ); + $text = preg_replace( '/\s*\*\/\s*$/', '', $text ); + $text = preg_replace( '/\s*\/\s*$/', '', $text ); + $text = preg_replace( '/\n\s*$/', '', $text ); + + $text = trim( $text ); + + // Normalize URL formatting - remove angle brackets + $text = preg_replace( '/<(https?:\/\/[^>]+)>/', '$1', $text ); + + // Convert @param, @return, @since, etc. into list items + $text = preg_replace( + '/^@(param|return|since|date|deprecated|var|package|type)\s+/m', + '* @$1 ', + $text + ); + + return $text; + } + + /** + * Track an undocumented code element. + * + * @param string $file The file path where the element was found. + * @param string $type The type of element (class, method, property, etc.). + * @param string $name The name of the undocumented element. + */ + private function track_undocumented( $file, $type, $name ) { + if ( ! isset( $this->undocumented_elements[ $file ] ) ) { + $this->undocumented_elements[ $file ] = array(); + } + if ( ! isset( $this->undocumented_elements[ $file ][ $type ] ) ) { + $this->undocumented_elements[ $file ][ $type ] = array(); + } + $this->undocumented_elements[ $file ][ $type ][] = $name; + } + + /** + * Generate index files for each directory of documentation. + */ + private function generate_index_files() { + foreach ( $this->files_by_directory as $dir => $files ) { + // Sort files for consistent order + sort( $files ); + + // Handle root directory differently + if ( '' === $dir || '.' === $dir ) { + $index_path = $this->output_dir . '/index.md'; + } else { + // For subdirectories, just use index.md + $index_path = $this->output_dir . '/' . $dir . '/index.md'; + } + + // Special handling for root code reference index + if ( '' === $dir ) { + $index_content = '# Code Reference' . "\n\n"; + } else { + $index_content = '#' . ( '.' === $dir ? ' Code Reference' : ' ' . ucwords( str_replace( '/', ' ', $dir ) ) ) . "\n\n"; + } + $index_content .= '## Files' . "\n\n"; + + foreach ( $files as $file ) { + $basename = basename( $file, '.md' ); + $title = ucwords( str_replace( '-', ' ', $basename ) ); + $index_content .= '- [' . $title . '](' . $basename . ')' . "\n"; + } + + // Ensure file ends with single newline and no trailing spaces + $index_content = rtrim( rtrim( $index_content ), "\n" ) . "\n"; + + // Create directory if it doesn't exist + $dir_path = dirname( $index_path ); + if ( ! is_dir( $dir_path ) ) { + mkdir( $dir_path, 0755, true ); + } + + file_put_contents( $index_path, $index_content ); + } + } + + /** + * Generate the META.md file containing undocumented elements and duplicate hooks. + */ + private function generate_meta_file() { + if ( empty( $this->undocumented_elements ) ) { + return; + } + + $markdown = "# Undocumented Code Elements\n\n"; + $markdown .= "This file tracks code elements that need documentation.\n\n"; + + // Track duplicate hooks + $hook_counts = array(); + foreach ( $this->files_by_directory['hooks'] ?? array() as $hook_file ) { + $file_path = $this->output_dir . '/hooks/' . $hook_file; + if ( file_exists( $file_path ) ) { + $content = file_get_contents( $file_path ); + preg_match_all( '/^## `([^`]+)`/m', $content, $matches ); + foreach ( $matches[1] as $hook_name ) { + if ( ! isset( $hook_counts[ $hook_name ] ) ) { + $hook_counts[ $hook_name ] = 0; + } + ++$hook_counts[ $hook_name ]; + } + } + } + + // Add duplicate hooks section if any found + $duplicate_hooks = array_filter( + $hook_counts, + function ( $count ) { + return $count > 1; + } + ); + + if ( ! empty( $duplicate_hooks ) ) { + $markdown .= "# Duplicate Hooks\n\n"; + arsort( $duplicate_hooks ); // Sort by count, highest first + + foreach ( $duplicate_hooks as $hook => $count ) { + $markdown .= "- `{$hook}` (used {$count} times)\n"; + } + $markdown .= "\n"; + } + + // Sort files alphabetically + ksort( $this->undocumented_elements ); + + foreach ( $this->undocumented_elements as $file => $types ) { + $markdown .= '## ' . $file . "\n\n"; + + // Sort types of elements(class, method, property, hook, function). + ksort( $types ); + + foreach ( $types as $type => $elements ) { + $markdown .= '### ' . ucfirst( $type ) . "s\n\n"; + + // Sort elements alphabetically + sort( $elements ); + + foreach ( $elements as $element ) { + $markdown .= '- `' . $element . "`\n"; + } + $markdown .= "\n"; + } + } + + file_put_contents( $this->output_dir . '/META.md', $markdown ); + } + + /** + * Save markdown documentation to appropriate files. + * + * @param \Symfony\Component\Finder\SplFileInfo $file The source file. + * @param array $docs The documentation to save. + */ + private function save_markdown( $file, $docs ) { + if ( empty( $docs ) ) { + return; + } + + // Handle hooks separately + if ( ! empty( $docs['hooks'] ) ) { + $markdown = ''; + // Group hooks by type + $grouped_hooks = array(); + foreach ( $docs['hooks'] as $hook ) { + $type = $hook['type']; + if ( ! isset( $grouped_hooks[ $type ] ) ) { + $grouped_hooks[ $type ] = array(); + } + $grouped_hooks[ $type ][] = $hook; + } + + // Create hooks directory if it doesn't exist + $hooks_dir = $this->output_dir . '/hooks'; + if ( ! is_dir( $hooks_dir ) ) { + mkdir( $hooks_dir, 0755, true ); + } + + // Save each hook type to its own file + foreach ( $grouped_hooks as $type => $hooks ) { + $hook_markdown = '# ' . ucfirst( str_replace( '_', ' ', $type ) ) . "\n\n"; + foreach ( $hooks as $hook ) { + $hook_markdown .= "## `{$hook['name']}`\n\n"; + if ( ! empty( $hook['doc'] ) ) { + $hook_markdown .= "{$hook['doc']}\n\n"; + } + // Add file reference + $hook_markdown .= '_Defined in: ' . str_replace( dirname( dirname( __DIR__ ) ) . '/includes/', '', $file->getRealPath() ) . "_\n\n"; + } + + $hook_file = $hooks_dir . '/' . $type . '.md'; + + // Load existing content + $existing_content = file_exists( $hook_file ) ? file_get_contents( $hook_file ) . "\n" : ''; + + $hook_markdown = $existing_content . $hook_markdown; + + // Track hook files for index generation + if ( ! isset( $this->files_by_directory['hooks'] ) ) { + $this->files_by_directory['hooks'] = array(); + } + if ( ! in_array( basename( $hook_file ), $this->files_by_directory['hooks'], true ) ) { + $this->files_by_directory['hooks'][] = basename( $hook_file ); + } + } + + // After processing all hooks, sort each file + foreach ( $this->files_by_directory['hooks'] as $hook_file ) { + $file_path = $hooks_dir . '/' . $hook_file; + if ( file_exists( $file_path ) ) { + // Read the file + $content = file_get_contents( $file_path ); + + // Split into sections (each hook documentation) + $sections = preg_split( '/(?=^## )/m', $content ); + + // Keep the title section (first section starting with # ) + $title = array_shift( $sections ); + + // Sort the remaining sections + sort( $sections, SORT_STRING | SORT_FLAG_CASE ); + + // Combine and write back + file_put_contents( $file_path, $title . implode( '', $sections ) ); + } + } + + // Remove hooks from docs array so they're not included in the main file + unset( $docs['hooks'] ); + } + + // Handle regular documentation + if ( ! empty( $docs ) ) { + $relative_path = str_replace( + dirname( dirname( __DIR__ ) ) . '/includes/', + '', + $file->getRealPath() + ); + + // Add -file suffix before .md extension + $output_path = $this->output_dir . '/' . preg_replace( + '/' . self::PHP_EXT . '$/', + self::FILE_SUFFIX . self::MD_EXT, + $relative_path + ); + + $output_dir = dirname( $output_path ); + if ( ! is_dir( $output_dir ) ) { + mkdir( $output_dir, 0755, true ); + } + + $markdown = $this->generate_markdown( $docs ); + file_put_contents( $output_path, $markdown ); + + // Track files by directory for index generation + $relative_dir = dirname( $relative_path ); + if ( ! isset( $this->files_by_directory[ $relative_dir ] ) ) { + $this->files_by_directory[ $relative_dir ] = array(); + } + $this->files_by_directory[ $relative_dir ][] = basename( $output_path ); + } + } + + /** + * Generate markdown content from documentation array. + * + * @param array $docs Documentation organized by type. + * @return string Generated markdown content. + */ + private function generate_markdown( $docs ) { + $markdown = ''; + + // Generate standalone functions documentation + if ( ! empty( $docs['functions'] ) ) { + $markdown .= '# Global Functions' . "\n\n"; + foreach ( $docs['functions'] as $name => $doc ) { + $markdown .= '## `' . $name . '()`' . "\n\n"; + $markdown .= trim( $doc ) . "\n\n\n"; // Add extra newline after each function + } + $markdown .= "---\n\n"; + } + + if ( isset( $docs['class'] ) ) { + $markdown .= '# ' . $docs['class']['name'] . "\n\n"; + $markdown .= trim( $docs['class']['doc'] ) . "\n\n"; + + // Add properties section + if ( ! empty( $docs['class']['properties'] ) ) { + $markdown .= '## Properties' . "\n\n"; + foreach ( $docs['class']['properties'] as $name => $doc ) { + $markdown .= '### `$' . $name . '`' . "\n\n"; + $markdown .= trim( $doc ) . "\n\n"; + } + } + + if ( ! empty( $docs['class']['methods'] ) ) { + $markdown .= '## Methods' . "\n\n"; + foreach ( $docs['class']['methods'] as $name => $doc ) { + $markdown .= '### `' . $name . '`' . "\n\n"; + $markdown .= trim( $doc ) . "\n\n"; + } + } + } + + // Ensure file ends with single newline and no trailing spaces + $markdown = rtrim( rtrim( $markdown ), "\n" ) . "\n"; + return $markdown; + } +} + +// Parse command line arguments +$options = getopt( '', array( 'output::' ) ); +$output_dir = isset( $options['output'] ) ? $options['output'] : __DIR__ . '/../code-reference'; +$generator = new DocGenerator( $output_dir ); +$generator->generate(); diff --git a/docs/bin/manifest.json b/docs/bin/manifest.json index 1f94b2de..deb3a11b 100644 --- a/docs/bin/manifest.json +++ b/docs/bin/manifest.json @@ -4,6 +4,166 @@ "parent": null, "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/scf.md" }, + "code-reference/acf-bidirectional-functions-file": { + "slug": "acf-bidirectional-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-bidirectional-functions-file.md" + }, + "code-reference/acf-field-functions-file": { + "slug": "acf-field-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-field-functions-file.md" + }, + "code-reference/acf-field-group-functions-file": { + "slug": "acf-field-group-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-field-group-functions-file.md" + }, + "code-reference/acf-form-functions-file": { + "slug": "acf-form-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-form-functions-file.md" + }, + "code-reference/acf-helper-functions-file": { + "slug": "acf-helper-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-helper-functions-file.md" + }, + "code-reference/acf-hook-functions-file": { + "slug": "acf-hook-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-hook-functions-file.md" + }, + "code-reference/acf-input-functions-file": { + "slug": "acf-input-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-input-functions-file.md" + }, + "code-reference/acf-internal-post-type-functions-file": { + "slug": "acf-internal-post-type-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-internal-post-type-functions-file.md" + }, + "code-reference/acf-meta-functions-file": { + "slug": "acf-meta-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-meta-functions-file.md" + }, + "code-reference/acf-post-functions-file": { + "slug": "acf-post-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-post-functions-file.md" + }, + "code-reference/acf-post-type-functions-file": { + "slug": "acf-post-type-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-post-type-functions-file.md" + }, + "code-reference/acf-taxonomy-functions-file": { + "slug": "acf-taxonomy-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-taxonomy-functions-file.md" + }, + "code-reference/acf-user-functions-file": { + "slug": "acf-user-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-user-functions-file.md" + }, + "code-reference/acf-utility-functions-file": { + "slug": "acf-utility-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-utility-functions-file.md" + }, + "code-reference/acf-value-functions-file": { + "slug": "acf-value-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-value-functions-file.md" + }, + "code-reference/acf-wp-functions-file": { + "slug": "acf-wp-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/acf-wp-functions-file.md" + }, + "code-reference/assets-file": { + "slug": "assets-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/assets-file.md" + }, + "code-reference/blocks-file": { + "slug": "blocks-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/blocks-file.md" + }, + "code-reference/compatibility-file": { + "slug": "compatibility-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/compatibility-file.md" + }, + "code-reference/deprecated-file": { + "slug": "deprecated-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/deprecated-file.md" + }, + "code-reference/fields-file": { + "slug": "fields-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/fields-file.md" + }, + "code-reference": { + "slug": "code-reference", + "parent": null, + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/index.md" + }, + "code-reference/l10n-file": { + "slug": "l10n-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/l10n-file.md" + }, + "code-reference/local-fields-file": { + "slug": "local-fields-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/local-fields-file.md" + }, + "code-reference/local-json-file": { + "slug": "local-json-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/local-json-file.md" + }, + "code-reference/local-meta-file": { + "slug": "local-meta-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/local-meta-file.md" + }, + "code-reference/locations-file": { + "slug": "locations-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/locations-file.md" + }, + "code-reference/loop-file": { + "slug": "loop-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/loop-file.md" + }, + "code-reference/revisions-file": { + "slug": "revisions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/revisions-file.md" + }, + "code-reference/scf-ui-options-page-functions-file": { + "slug": "scf-ui-options-page-functions-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/scf-ui-options-page-functions-file.md" + }, + "code-reference/upgrades-file": { + "slug": "upgrades-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/upgrades-file.md" + }, + "code-reference/validation-file": { + "slug": "validation-file", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/validation-file.md" + }, "concepts/architecture": { "slug": "architecture", "parent": "concepts", @@ -29,11 +189,6 @@ "parent": null, "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/contributing/index.md" }, - "features/api": { - "slug": "api", - "parent": "features", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/api.md" - }, "features": { "slug": "features", "parent": null, @@ -44,6 +199,11 @@ "parent": "features", "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/post-types.md" }, + "features/scf-api": { + "slug": "scf-api", + "parent": "features", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/scf-api.md" + }, "getting-started": { "slug": "getting-started", "parent": null, @@ -69,249 +229,454 @@ "parent": null, "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/tutorials/index.md" }, - "features/fields": { + "code-reference/admin/admin-notices-file": { + "slug": "admin-notices-file", + "parent": "admin", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/admin/admin-notices-file.md" + }, + "code-reference/admin/admin-tools-file": { + "slug": "admin-tools-file", + "parent": "admin", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/admin/admin-tools-file.md" + }, + "code-reference/admin": { + "slug": "admin", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/admin/index.md" + }, + "code-reference/api/api-helpers-file": { + "slug": "api-helpers-file", + "parent": "api", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/api/api-helpers-file.md" + }, + "code-reference/api/api-template-file": { + "slug": "api-template-file", + "parent": "api", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/api/api-template-file.md" + }, + "code-reference/api/api-term-file": { + "slug": "api-term-file", + "parent": "api", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/api/api-term-file.md" + }, + "code-reference/api": { + "slug": "api", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/api/index.md" + }, + "code-reference/fields/class-acf-repeater-table-file": { + "slug": "class-acf-repeater-table-file", + "parent": "fields", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/fields/class-acf-repeater-table-file.md" + }, + "code-reference/fields": { "slug": "fields", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/fields/index.md" + }, + "code-reference/forms/form-front-file": { + "slug": "form-front-file", + "parent": "forms", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/forms/form-front-file.md" + }, + "code-reference/forms": { + "slug": "forms", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/forms/index.md" + }, + "code-reference/hooks": { + "slug": "hooks", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/hooks/index.md" + }, + "code-reference/rest-api/acf-rest-api-functions-file": { + "slug": "acf-rest-api-functions-file", + "parent": "rest-api", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/rest-api/acf-rest-api-functions-file.md" + }, + "code-reference/rest-api/class-acf-rest-api-file": { + "slug": "class-acf-rest-api-file", + "parent": "rest-api", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/rest-api/class-acf-rest-api-file.md" + }, + "code-reference/rest-api/class-acf-rest-embed-links-file": { + "slug": "class-acf-rest-embed-links-file", + "parent": "rest-api", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/rest-api/class-acf-rest-embed-links-file.md" + }, + "code-reference/rest-api/class-acf-rest-request-file": { + "slug": "class-acf-rest-request-file", + "parent": "rest-api", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/rest-api/class-acf-rest-request-file.md" + }, + "code-reference/rest-api": { + "slug": "rest-api", + "parent": "code-reference", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/code-reference/rest-api/index.md" + }, + "features/field": { + "slug": "field", "parent": "features", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/index.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/index.md" }, - "features/fields/accordion": { + "features/field/accordion": { "slug": "accordion", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/accordion/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/accordion/index.md" }, - "features/fields/accordion/tutorial": { + "features/field/accordion/tutorial": { "slug": "accordion-tutorial", "parent": "accordion", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/accordion/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/accordion/tutorial.md" }, - "features/fields/button-group": { + "features/field/button-group": { "slug": "button-group", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/button-group/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/button-group/index.md" }, - "features/fields/button-group/tutorial": { + "features/field/button-group/tutorial": { "slug": "button-group-tutorial", "parent": "button-group", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/button-group/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/button-group/tutorial.md" }, - "features/fields/checkbox": { + "features/field/checkbox": { "slug": "checkbox", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/checkbox/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/checkbox/index.md" }, - "features/fields/checkbox/tutorial": { + "features/field/checkbox/tutorial": { "slug": "checkbox-tutorial", "parent": "checkbox", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/checkbox/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/checkbox/tutorial.md" }, - "features/fields/clone": { + "features/field/clone": { "slug": "clone", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/clone/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/clone/index.md" }, - "features/fields/clone/tutorial": { + "features/field/clone/tutorial": { "slug": "clone-tutorial", "parent": "clone", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/clone/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/clone/tutorial.md" }, - "features/fields/color-picker": { + "features/field/color-picker": { "slug": "color-picker", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/color-picker/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/color-picker/index.md" }, - "features/fields/color-picker/tutorial": { + "features/field/color-picker/tutorial": { "slug": "color-picker-tutorial", "parent": "color-picker", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/color-picker/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/color-picker/tutorial.md" }, - "features/fields/date-picker": { + "features/field/date-picker": { "slug": "date-picker", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/date-picker/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/date-picker/index.md" }, - "features/fields/date-picker/tutorial": { + "features/field/date-picker/tutorial": { "slug": "date-picker-tutorial", "parent": "date-picker", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/date-picker/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/date-picker/tutorial.md" }, - "features/fields/date-time-picker": { + "features/field/date-time-picker": { "slug": "date-time-picker", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/date-time-picker/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/date-time-picker/index.md" }, - "features/fields/date-time-picker/tutorial": { + "features/field/date-time-picker/tutorial": { "slug": "date-time-picker-tutorial", "parent": "date-time-picker", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/date-time-picker/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/date-time-picker/tutorial.md" }, - "features/fields/email": { + "features/field/email": { "slug": "email", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/email/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/email/index.md" }, - "features/fields/email/tutorial": { + "features/field/email/tutorial": { "slug": "email-tutorial", "parent": "email", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/email/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/email/tutorial.md" }, - "features/fields/file": { + "features/field/file": { "slug": "file", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/file/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/file/index.md" }, - "features/fields/file/tutorial": { + "features/field/file/tutorial": { "slug": "file-tutorial", "parent": "file", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/file/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/file/tutorial.md" }, - "features/fields/flexible-content": { + "features/field/flexible-content": { "slug": "flexible-content", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/flexible-content/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/flexible-content/index.md" }, - "features/fields/flexible-content/tutorial": { + "features/field/flexible-content/tutorial": { "slug": "flexible-content-tutorial", "parent": "flexible-content", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/flexible-content/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/flexible-content/tutorial.md" }, - "features/fields/gallery": { + "features/field/gallery": { "slug": "gallery", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/gallery/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/gallery/index.md" }, - "features/fields/gallery/tutorial": { + "features/field/gallery/tutorial": { "slug": "gallery-tutorial", "parent": "gallery", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/gallery/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/gallery/tutorial.md" }, - "features/fields/google-map": { + "features/field/google-map": { "slug": "google-map", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/google-map/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/google-map/index.md" }, - "features/fields/google-map/tutorial": { + "features/field/google-map/tutorial": { "slug": "google-map-tutorial", "parent": "google-map", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/google-map/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/google-map/tutorial.md" }, - "features/fields/group": { + "features/field/group": { "slug": "group", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/group/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/group/index.md" }, - "features/fields/group/tutorial": { + "features/field/group/tutorial": { "slug": "group-tutorial", "parent": "group", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/group/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/group/tutorial.md" }, - "features/fields/icon-picker": { + "features/field/icon-picker": { "slug": "icon-picker", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/icon-picker/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/icon-picker/index.md" }, - "features/fields/icon-picker/tutorial": { + "features/field/icon-picker/tutorial": { "slug": "icon-picker-tutorial", "parent": "icon-picker", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/icon-picker/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/icon-picker/tutorial.md" }, - "features/fields/image": { + "features/field/image": { "slug": "image", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/image/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/image/index.md" }, - "features/fields/image/tutorial": { + "features/field/image/tutorial": { "slug": "image-tutorial", "parent": "image", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/image/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/image/tutorial.md" }, - "features/fields/link": { + "features/field/link": { "slug": "link", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/link/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/link/index.md" }, - "features/fields/link/tutorial": { + "features/field/link/tutorial": { "slug": "link-tutorial", "parent": "link", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/link/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/link/tutorial.md" }, - "features/fields/message": { + "features/field/message": { "slug": "message", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/message/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/message/index.md" }, - "features/fields/message/tutorial": { + "features/field/message/tutorial": { "slug": "message-tutorial", "parent": "message", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/message/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/message/tutorial.md" }, - "features/fields/number": { + "features/field/number": { "slug": "number", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/number/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/number/index.md" }, - "features/fields/number/tutorial": { + "features/field/number/tutorial": { "slug": "number-tutorial", "parent": "number", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/number/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/number/tutorial.md" }, - "features/fields/oembed": { + "features/field/oembed": { "slug": "oembed", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/oembed/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/oembed/index.md" }, - "features/fields/oembed/tutorial": { + "features/field/oembed/tutorial": { "slug": "oembed-tutorial", "parent": "oembed", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/oembed/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/oembed/tutorial.md" }, - "features/fields/page-link": { + "features/field/page-link": { "slug": "page-link", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/page-link/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/page-link/index.md" }, - "features/fields/page-link/tutorial": { + "features/field/page-link/tutorial": { "slug": "page-link-tutorial", "parent": "page-link", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/page-link/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/page-link/tutorial.md" }, - "features/fields/password": { + "features/field/password": { "slug": "password", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/password/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/password/index.md" }, - "features/fields/password/tutorial": { + "features/field/password/tutorial": { "slug": "password-tutorial", "parent": "password", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/password/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/password/tutorial.md" }, - "features/fields/post-object": { + "features/field/post-object": { "slug": "post-object", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/post-object/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/post-object/index.md" }, - "features/fields/post-object/tutorial": { + "features/field/post-object/tutorial": { "slug": "post-object-tutorial", "parent": "post-object", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/post-object/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/post-object/tutorial.md" }, - "features/fields/radio": { + "features/field/radio": { "slug": "radio", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/radio/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/radio/index.md" }, - "features/fields/radio/tutorial": { + "features/field/radio/tutorial": { "slug": "radio-tutorial", "parent": "radio", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/radio/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/radio/tutorial.md" }, - "features/fields/range": { + "features/field/range": { "slug": "range", - "parent": "fields", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/range/index.md" + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/range/index.md" }, - "features/fields/range/tutorial": { + "features/field/range/tutorial": { "slug": "range-tutorial", "parent": "range", - "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/fields/range/tutorial.md" + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/range/tutorial.md" + }, + "features/field/repeater": { + "slug": "repeater", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/repeater/index.md" + }, + "features/field/repeater/tutorial": { + "slug": "repeater-tutorial", + "parent": "repeater", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/repeater/tutorial.md" + }, + "features/field/select": { + "slug": "select", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/select/index.md" + }, + "features/field/select/tutorial": { + "slug": "select-tutorial", + "parent": "select", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/select/tutorial.md" + }, + "features/field/separator": { + "slug": "separator", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/separator/index.md" + }, + "features/field/separator/tutorial": { + "slug": "separator-tutorial", + "parent": "separator", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/separator/tutorial.md" + }, + "features/field/tab": { + "slug": "tab", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/tab/index.md" + }, + "features/field/tab/tutorial": { + "slug": "tab-tutorial", + "parent": "tab", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/tab/tutorial.md" + }, + "features/field/taxonomy": { + "slug": "taxonomy", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/taxonomy/index.md" + }, + "features/field/taxonomy/tutorial": { + "slug": "taxonomy-tutorial", + "parent": "taxonomy", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/taxonomy/tutorial.md" + }, + "features/field/text": { + "slug": "text", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/text/index.md" + }, + "features/field/text/tutorial": { + "slug": "text-tutorial", + "parent": "text", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/text/tutorial.md" + }, + "features/field/textarea": { + "slug": "textarea", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/textarea/index.md" + }, + "features/field/textarea/tutorial": { + "slug": "textarea-tutorial", + "parent": "textarea", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/textarea/tutorial.md" + }, + "features/field/time-picker": { + "slug": "time-picker", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/time-picker/index.md" + }, + "features/field/time-picker/tutorial": { + "slug": "time-picker-tutorial", + "parent": "time-picker", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/time-picker/tutorial.md" + }, + "features/field/true-false": { + "slug": "true-false", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/true-false/index.md" + }, + "features/field/true-false/tutorial": { + "slug": "true-false-tutorial", + "parent": "true-false", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/true-false/tutorial.md" + }, + "features/field/url": { + "slug": "url", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/url/index.md" + }, + "features/field/url/tutorial": { + "slug": "url-tutorial", + "parent": "url", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/url/tutorial.md" + }, + "features/field/user": { + "slug": "user", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/user/index.md" + }, + "features/field/user/tutorial": { + "slug": "user-tutorial", + "parent": "user", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/user/tutorial.md" + }, + "features/field/wysiwyg": { + "slug": "wysiwyg", + "parent": "field", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/wysiwyg/index.md" + }, + "features/field/wysiwyg/tutorial": { + "slug": "wysiwyg-tutorial", + "parent": "wysiwyg", + "markdown_source": "https://github.com/wordpress/secure-custom-fields/blob/trunk/docs/features/field/wysiwyg/tutorial.md" } } \ No newline at end of file diff --git a/docs/bin/update-markdown-links.php b/docs/bin/update-markdown-links.php new file mode 100644 index 00000000..c3401119 --- /dev/null +++ b/docs/bin/update-markdown-links.php @@ -0,0 +1,46 @@ +#!/usr/bin/env php +<?php +/** + * Update markdown links to remove .md extensions and /index paths. + * + * @package wordpress/secure-custom-fields + */ + +// phpcs:disable WordPress.WP.AlternativeFunctions -- Using native PHP functions as this is a CLI script. + +$root = dirname( __DIR__ ); +$paths = array( + $root . '/*.md', + $root . '/*/*.md', + $root . '/*/*/*.md', + $root . '/*/*/*/*.md', +); + +$updated_files = 0; +$updated_links = 0; + +foreach ( $paths as $path_pattern ) { + foreach ( glob( $path_pattern ) as $file ) { + if ( basename( $file ) === 'README.md' || basename( $file ) === 'META.md' ) { + continue; + } + + $content = file_get_contents( $file ); + $original = $content; + + // Replace links ending in .md + $content = preg_replace( '/\]\(([^)]+)\.md\)/', ']($1)', $content ); + + // Replace links ending in /index + $content = preg_replace( '/\]\(([^)]+)\/index\)/', ']($1)', $content ); + + if ( $content !== $original ) { + file_put_contents( $file, $content ); + ++$updated_files; + $updated_links += substr_count( $original, '.md)' ) + substr_count( $original, '/index)' ); + } + } +} + +// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped +printf( 'Updated %d links in %d files%s', $updated_links, $updated_files, PHP_EOL ); diff --git a/docs/code-reference/META.md b/docs/code-reference/META.md new file mode 100644 index 00000000..16dbdb6b --- /dev/null +++ b/docs/code-reference/META.md @@ -0,0 +1,613 @@ +# Undocumented Code Elements + +This file tracks code elements that need documentation. + +## Blocks/Bindings.php + +### Hooks + +- `acf/bindings/field_not_allowed_message` +- `acf/bindings/field_not_supported_message` +- `acf/blocks/binding_value` + +## acf-bidirectional-functions.php + +### Hooks + +- `acf/bidirectional/supported_field_types_for_post` +- `acf/bidirectional/supported_target_field_types` + +## acf-field-functions.php + +### Hooks + +- `acf/clone_field` +- `acf/duplicate_field` +- `acf/field_wrapper_attributes` +- `acf/get_field_count` +- `acf/get_field_label` +- `acf/get_sub_field` +- `acf/is_field_key` +- `acf/load_field` +- `acf/load_fields` +- `acf/pre_render_field` +- `acf/pre_render_fields` +- `acf/prepare_field` +- `acf/prepare_field_for_export` +- `acf/prepare_field_for_import` +- `acf/prepare_fields_for_import` +- `acf/translate_field` +- `acf/update_field` +- `acf/validate_field` + +## acf-field-group-functions.php + +### Hooks + +- `acf/field_group/additional_group_settings_tabs` +- `acf/get_field_group_style` + +## acf-form-functions.php + +### Hooks + +- `acf/input/form_data` +- `acf/save_post` + +## acf-helper-functions.php + +### Hooks + +- `acf/get_cache_key` +- `acf/slugify` + +## acf-internal-post-type-functions.php + +### Hooks + +- `acf/post_type/additional_settings_tabs` +- `acf/taxonomy/additional_settings_tabs` +- `acf/ui_options_page/additional_settings_tabs` + +## acf-meta-functions.php + +### Hooks + +- `acf/load_meta` +- `acf/pre_delete_metadata` +- `acf/pre_load_meta` +- `acf/pre_load_metadata` +- `acf/pre_update_metadata` + +## acf-user-functions.php + +### Hooks + +- `acf/allow_unfiltered_html` + +## acf-value-functions.php + +### Hooks + +- `acf/format_value` +- `acf/get_invalid_field_value` +- `acf/load_reference` +- `acf/load_value` +- `acf/pre_format_value` +- `acf/pre_load_reference` +- `acf/pre_load_value` +- `acf/pre_update_value` +- `acf/prevent_access_to_unknown_fields` +- `acf/preview_value` +- `acf/update_value` + +## acf-wp-functions.php + +### Hooks + +- `acf/decode_post_id` +- `acf/get_object_type` + +## admin/admin-internal-post-type-list.php + +### Hooks + +- `acf/internal_post_type_list/admin_body_classes` +- `acf/internal_post_type_list/current_screen` + +## admin/admin-internal-post-type.php + +### Hooks + +- `acf/internal_post_type/admin_body_classes` +- `acf/internal_post_type/current_screen` + +## admin/admin-tools.php + +### Hooks + +- `acf/include_admin_tools` + +## admin/admin.php + +### Hooks + +- `acf/admin/prevent_escaped_html_notice` +- `acf/in_admin_header` + +## admin/class-acf-admin-options-page.php + +### Hooks + +- `acf/input/meta_box_priority` + +## admin/post-types/admin-field-group.php + +### Hooks + +- `acf/field_group/admin_enqueue_scripts` +- `acf/field_group/admin_footer` +- `acf/field_group/admin_head` +- `acf/field_group/admin_l10n` +- `acf/field_group/disable_field_settings_tabs` +- `acf/field_group/form_data` +- `acf/update_field_group` +- `acf/update_field_group` + +## admin/post-types/admin-field-groups.php + +### Hooks + +- `acf/field_group/list_table_classes` + +## admin/post-types/admin-post-type.php + +### Hooks + +- `acf/post_type/admin_enqueue_scripts` +- `acf/post_type/admin_footer` +- `acf/post_type/admin_head` +- `acf/post_type/admin_l10n` +- `acf/post_type/form_data` + +## admin/post-types/admin-taxonomy.php + +### Hooks + +- `acf/taxonomy/admin_enqueue_scripts` +- `acf/taxonomy/admin_footer` +- `acf/taxonomy/admin_head` +- `acf/taxonomy/admin_l10n` +- `acf/taxonomy/form_data` + +## admin/post-types/class-acf-admin-ui-options-page.php + +### Hooks + +- `acf/ui_options_page/admin_enqueue_scripts` +- `acf/ui_options_page/admin_footer` +- `acf/ui_options_page/admin_head` +- `acf/ui_options_page/admin_l10n` +- `acf/ui_options_page/form_data` + +## admin/views/acf-field-group/conditional-logic.php + +### Hooks + +- `acf/conditional_logic/choices` + +## admin/views/acf-field-group/field.php + +### Hooks + +- `acf/field_group/enable_field_browser` +- `acf/field_group/enable_field_type_select2` +- `acf/render_field_settings` + +## admin/views/acf-field-group/fields.php + +### Hooks + +- `acf/field_group/auto_add_first_field` + +## admin/views/acf-field-group/options.php + +### Hooks + +- `acf/render_field_group_settings` + +## admin/views/acf-post-type/advanced-settings.php + +### Hooks + +- `acf/post_type/available_supports` + +## admin/views/acf-post-type/basic-settings.php + +### Hooks + +- `acf/post_type/basic_settings` + +## admin/views/acf-taxonomy/basic-settings.php + +### Hooks + +- `acf/taxonomy/basic_settings` + +## admin/views/acf-ui-options-page/basic-settings.php + +### Hooks + +- `acf/post_type/basic_settings` + +## admin/views/acf-ui-options-page/create-options-page-modal.php + +### Hooks + +- `acf/options_page_modal/prefill_title` + +## admin/views/global/form-top.php + +### Hooks + +- `acf/field_group/prefill_title` +- `enter_title_here` + +## admin/views/global/navigation.php + +### Hooks + +- `acf/admin/toolbar` + +## ajax/class-acf-ajax-query-users.php + +### Hooks + +- `acf/ajax/query_users/args` +- `acf/ajax/query_users/result` +- `acf/ajax/query_users/results` +- `acf/ajax/query_users/search_columns` + +## api/api-helpers.php + +### Functions + +- `_acf_settings_uploader` +- `acf_decode_choices` +- `acf_get_image_size` +- `acf_get_post_title` +- `acf_get_pretty_post_types` +- `acf_maybe_get_GET` +- `acf_maybe_get_POST` +- `acf_order_by_search` + +### Hooks + +- `acf/acf_get_posts/args` +- `acf/acf_get_posts/results` +- `acf/connect_attachment_to_post` +- `acf/current_user_can_edit_post` +- `acf/filesize` +- `acf/get_image_sizes` +- `acf/get_post_id_info` +- `acf/get_post_stati` +- `acf/get_post_types` +- `acf/load_attachment` +- `acf/pre_load_attachment` +- `acf/pre_load_post_id` +- `acf/validate_attachment` +- `acf/validate_post_id` +- `acf/validate_setting` +- `acf/verify_ajax` + +## api/api-template.php + +### Functions + +- `acf_filter_post_id` +- `get_row` +- `get_row_index` +- `render_field` +- `reset_the_repeater_field` +- `the_flexible_field` +- `the_repeater_field` +- `the_row_index` + +### Hooks + +- `acf/admin/prevent_escaped_html_notice` +- `acf/ajax/shortcode_capability` +- `acf/prevent_access_to_unknown_fields` +- `acf/removed_unsafe_html` +- `acf/removed_unsafe_html` +- `acf/removed_unsafe_html` +- `acf/shortcode/allow_in_block_themes_outside_content` +- `acf/shortcode/allow_unsafe_html` +- `acf/shortcode/disabled_message` +- `acf/shortcode/field_not_allowed_message` +- `acf/shortcode/field_not_supported_message` +- `acf/shortcode/post_not_public_message` +- `acf/shortcode/prevent_access` +- `acf/shortcode/prevent_access_to_fields_on_non_public_posts` +- `acf/shortcode/preview_capability` +- `acf/shortcode/preview_capability_message` +- `acf/the_field/allow_unsafe_html` +- `acf/the_field/allow_unsafe_html` + +## api/api-term.php + +### Hooks + +- `acf/get_taxonomies` + +## assets.php + +### Hooks + +- `acf/admin_print_footer_scripts` +- `acf/admin_print_scripts` +- `acf/enqueue_scripts` +- `acf/input/admin_l10n` +- `acf/input/admin_print_footer_scripts` +- `acf/input/admin_print_scripts` + +## blocks.php + +### Hooks + +- `acf/blocks/no_fields_assigned_message` +- `acf/blocks/prevent_edit_forms_on_rest_endpoints` +- `acf/blocks/render_capability` +- `acf/blocks/template_not_found_message` +- `acf/blocks/wrap_frontend_innerblocks` +- `acf/pre_save_block` +- `acf/register_block_type_args` +- `acf_block_render_template` + +## class-acf-options-page.php + +### Hooks + +- `acf/get_options_page` +- `acf/get_options_pages` +- `acf/validate_options_page` + +## class-acf-site-health.php + +### Hooks + +- `acf/field_group/disable_field_settings_tabs` +- `acf/field_group/enable_field_browser` + +## fields.php + +### Hooks + +- `acf/field_group/additional_field_settings_tabs` +- `acf/get_field_types` +- `acf/localized_field_categories` + +## fields/class-acf-field-flexible-content.php + +### Hooks + +- `acf/fields/flexible_content/layout_default_expanded` +- `acf/fields/flexible_content/layout_title` +- `acf/fields/flexible_content/no_value_message` + +## fields/class-acf-field-gallery.php + +### Hooks + +- `attachment_fields_to_save` + +## fields/class-acf-field-google-map.php + +### Hooks + +- `acf/fields/google_map/api` + +## fields/class-acf-field-icon_picker.php + +### Hooks + +- `acf/fields/icon_picker/dashicons` +- `acf/fields/icon_picker/tabs` + +## fields/class-acf-field-page_link.php + +### Hooks + +- `acf/fields/page_link/query` +- `acf/fields/page_link/result` + +## fields/class-acf-field-post_object.php + +### Hooks + +- `acf/fields/post_object/query` +- `acf/fields/post_object/result` + +## fields/class-acf-field-relationship.php + +### Hooks + +- `acf/fields/relationship/query` +- `acf/fields/relationship/result` + +## fields/class-acf-field-select.php + +### Hooks + +- `acf/fields/select/query` + +## fields/class-acf-field-taxonomy.php + +### Hooks + +- `acf/fields/taxonomy/query` +- `acf/fields/taxonomy/result` +- `acf/fields/taxonomy/wp_list_categories` + +## fields/class-acf-field-user.php + +### Hooks + +- `acf/fields/user/query` +- `acf/fields/user/result` +- `acf/fields/user/result` +- `acf/fields/user/search_columns` + +## fields/class-acf-field-wysiwyg.php + +### Hooks + +- `acf/fields/wysiwyg/toolbars` +- `acf_the_content` +- `acf_the_editor_content` +- `mce_buttons` +- `mce_buttons_2` +- `mce_buttons_3` +- `mce_buttons_4` +- `media_buttons` +- `teeny_mce_buttons` + +## forms/form-front.php + +### Functions + +- `acf_form` +- `acf_get_form` +- `acf_get_forms` +- `acf_register_form` + +### Hooks + +- `acf/pre_save_post` +- `acf/pre_submit_form` +- `acf/submit_form` +- `acf/validate_form` + +## forms/form-post.php + +### Hooks + +- `acf/input/meta_box_priority` + +## l10n.php + +### Hooks + +- `acf/get_locale` +- `determine_locale` +- `plugin_locale` +- `pre_determine_locale` + +## local-json.php + +### Hooks + +- `acf/json/eof_newline` +- `acf/json/load_paths` +- `acf/json/save_file_name` +- `acf/json/save_paths` +- `acf/pre_save_json_file` + +## locations.php + +### Hooks + +- `acf/location/match_rule` +- `acf/location/rule_match` +- `acf/location/rule_operators` +- `acf/location/rule_types` +- `acf/location/rule_values` +- `acf/location/screen` +- `acf/location/validate_rule` + +## locations/class-acf-location-page-template.php + +### Hooks + +- `default_page_template_title` + +## locations/class-acf-location-post-template.php + +### Hooks + +- `default_page_template_title` + +## media.php + +### Hooks + +- `acf/upload_prefilter` + +## post-types/class-acf-post-type.php + +### Hooks + +- `acf/post_type/prevent_access_to_wp_functions_in_meta_box_cb` +- `acf/post_type/registration_args` + +## post-types/class-acf-taxonomy.php + +### Hooks + +- `acf/taxonomy/prevent_access_to_wp_functions_in_meta_box_cb` +- `acf/taxonomy/registration_args` + +## post-types/class-acf-ui-options-page.php + +### Hooks + +- `acf/ui_options_page/registration_args` + +## rest-api/acf-rest-api-functions.php + +### Hooks + +- `acf/rest/format_value_for_rest` +- `acf/rest/get_field_links` +- `acf/rest/get_field_schema` + +## rest-api/class-acf-rest-api.php + +### Classs + +- `ACF_Rest_Api` + +### Hooks + +- `acf/rest/get_fields` + +### Methods + +- `__construct` +- `initialize` +- `is_admin_mode` + +## rest-api/class-acf-rest-embed-links.php + +### Methods + +- `initialize` + +## upgrades.php + +### Hooks + +- `acf/update_500_field` +- `acf/upgrade_500` +- `acf/upgrade_500_field_group` +- `acf/upgrade_550` +- `acf/upgrade_550_taxonomy` +- `acf/upgrade_550_taxonomy_term` +- `acf/upgrade_550_termmeta` + +## validation.php + +### Hooks + +- `acf/validate_save_post` +- `acf/validate_value` diff --git a/docs/code-reference/acf-bidirectional-functions-file.md b/docs/code-reference/acf-bidirectional-functions-file.md new file mode 100644 index 00000000..72e8ee09 --- /dev/null +++ b/docs/code-reference/acf-bidirectional-functions-file.md @@ -0,0 +1,52 @@ +# Global Functions + +## `acf_update_bidirectional_values()` + +Process updating bidirectional fields. + +* @since ACF 6.2 +* @param array $target_item_ids The post, user or term IDs which should be updated with the origin item ID. +* @param integer|string $post_id The ACF encoded origin post, user or term ID. +* @param array $field The field being updated on the origin post, user or term ID. +* @param string|false $target_prefix The ACF prefix for a post, user or term ID required for the update_field call for this field type. + +## `acf_get_valid_bidirectional_target_types()` + +Allows third party fields to enable support as a target field type for a particular object type + +* @since ACF 6.2 +* @param string $object_type The object type that will be updated on the target field, such as 'term', 'user' or 'post'. +* @return array An array of valid field type names (slugs) for the target of the bidirectional field. + +## `acf_build_bidirectional_target_current_choices()` + +Build the complete choices argument for rendering the select2 field for bidirectional target based on the currently selected choices + +* @since ACF 6.2 +* @param array $choices The currently selected choices (as an array of field keys). +* @return array + +## `acf_build_bidirectional_relationship_field_target_args()` + +Build valid fields for a bidirectional relationship for select2 display + +* @since ACF 6.2 +* @param array $results The original results array. +* @param array $options The options provided to the select2 AJAX search. +* @return array + +## `acf_render_bidirectional_field_settings()` + +Renders the field settings required for bidirectional fields + +* @since ACF 6.2 +* @param array $field The field object passed into field setting functions. + +## `acf_get_bidirectional_field_settings_instruction_text()` + +Returns the translated instructional text for the message field for the bidirectional field settings. + +* @since ACF 6.2 +* @return string The html containing the instructional message. + +--- diff --git a/docs/code-reference/acf-field-functions-file.md b/docs/code-reference/acf-field-functions-file.md new file mode 100644 index 00000000..9627772d --- /dev/null +++ b/docs/code-reference/acf-field-functions-file.md @@ -0,0 +1,394 @@ +# Global Functions + +## `acf_get_field()` + +acf_get_field + +* Retrieves a field for the given identifier. +* @date 17/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field ID, key or name. +* @return (array|false) The field array. + +## `acf_get_raw_field()` + +acf_get_raw_field + +* Retrieves raw field data for the given identifier. +* @date 18/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field ID, key or name. +* @return (array|false) The field array. + +## `acf_get_field_post()` + +acf_get_field_post + +* Retrieves the field's WP_Post object. +* @date 18/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field ID, key or name. +* @return (array|false) The field array. + +## `acf_is_field_key()` + +acf_is_field_key + +* Returns true if the given identifier is a field key. +* @date 6/12/2013 +* @since ACF 5.0.0 +* @param string $id The identifier. +* @return boolean + +## `acf_validate_field()` + +acf_validate_field + +* Ensures the given field valid. +* @date 18/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @return array + +## `acf_get_valid_field()` + +acf_get_valid_field + +* Ensures the given field valid. +* @date 28/09/13 +* @since ACF 5.0.0 +* @param array $field The field array. +* @return array + +## `acf_translate_field()` + +acf_translate_field + +* Translates a field's settings. +* @date 8/03/2016 +* @since ACF 5.3.2 +* @param array $field The field array. +* @return array + +## `acf_get_fields()` + +acf_get_fields + +* Returns and array of fields for the given $parent. +* @date 30/09/13 +* @since ACF 5.0.0 +* @param (int|string|array) $parent The field group or field settings. Also accepts the field group ID or key. +* @return array + +## `acf_get_raw_fields()` + +acf_get_raw_fields + +* Returns and array of raw field data for the given parent id. +* @date 18/1/19 +* @since ACF 5.7.10 +* @param integer $id The field group or field id. +* @return array + +## `acf_get_field_count()` + +acf_get_field_count + +* Return the number of fields for the given field group. +* @date 17/10/13 +* @since ACF 5.0.0 +* @param array $parent The field group or field array. +* @return integer + +## `acf_clone_field()` + +acf_clone_field + +* Allows customization to a field when it is cloned. Used by the clone field. +* @date 8/03/2016 +* @since ACF 5.3.2 +* @param array $field The field being cloned. +* @param array $clone_field The clone field. +* @return array + +## `acf_prepare_field()` + +acf_prepare_field + +* Prepare a field for input. +* @date 20/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @return array + +## `acf_render_fields()` + +acf_render_fields + +* Renders an array of fields. Also loads the field's value. +* @date 8/10/13 +* @since ACF 5.0.0 +* @since ACF 5.6.9 Changed parameter order. +* @param array $fields An array of fields. +* @param (int|string) $post_id The post ID to load values from. +* @param string $element The wrapping element type. +* @param string $instruction The instruction render position (label|field). +* @return void + +## `acf_render_field_wrap()` + +Render the wrapping element for a given field. + +* @since ACF 5.0.0 +* @param array $field The field array. +* @param string $element The wrapping element type. +* @param string $instruction The instruction render position (label|field). +* @param boolean $field_setting If a field setting is being rendered. +* @return void + +## `acf_render_field()` + +acf_render_field + +* Render the input element for a given field. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @return void + +## `acf_render_field_label()` + +acf_render_field_label + +* Renders the field's label. +* @date 19/9/17 +* @since ACF 5.6.3 +* @param array $field The field array. +* @return void + +## `acf_get_field_label()` + +acf_get_field_label + +* Returns the field's label with appropriate required label. +* @date 4/11/2013 +* @since ACF 5.0.0 +* @param array $field The field array. +* @param string $context The output context (admin). +* @return string The field label in HTML format. + +## `acf_render_field_instructions()` + +Renders the field's instructions. + +* @since ACF 5.6.3 +* @param array $field The field array. +* @param boolean $tooltip If the instructions are being rendered as a tooltip. +* @return void + +## `acf_render_field_setting()` + +acf_render_field_setting + +* Renders a field setting used in the admin edit screen. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @param array $setting The settings field array. +* @param boolean $global Whether this setting is a global or field type specific one. +* @return void + +## `acf_update_field()` + +acf_update_field + +* Updates a field in the database. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @param array $specific An array of specific field attributes to update. +* @return array + +## `_acf_apply_unique_field_slug()` + +_acf_apply_unique_field_slug + +* Allows full control over 'acf-field' slugs. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param string $slug The post slug. +* @param integer $post_ID Post ID. +* @param string $post_status The post status. +* @param string $post_type Post type. +* @param integer $post_parent Post parent ID +* @param string $original_slug The original post slug. + +## `acf_flush_field_cache()` + +acf_flush_field_cache + +* Deletes all caches for this field. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @return void + +## `acf_delete_field()` + +acf_delete_field + +* Deletes a field from the database. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field ID, key or name. +* @return boolean True if field was deleted. + +## `acf_trash_field()` + +acf_trash_field + +* Trashes a field from the database. +* @date 2/10/13 +* @since ACF 5.0.0 +* @param (int|string) $id The field ID, key or name. +* @return boolean True if field was trashed. + +## `acf_untrash_field()` + +acf_untrash_field + +* Restores a field from the trash. +* @date 2/10/13 +* @since ACF 5.0.0 +* @param (int|string) $id The field ID, key or name. +* @return boolean True if field was trashed. + +## `_acf_untrash_field_post_status()` + +Filter callback which returns the previous post_status instead of "draft" for the "acf-field" post type. + +* Prior to WordPress 5.6.0, this filter was not needed as restored posts were always assigned their original status. +* @since ACF 5.9.5 +* @param string $new_status The new status of the post being restored. +* @param integer $post_id The ID of the post being restored. +* @param string $previous_status The status of the post at the point where it was trashed. +* @return string. + +## `acf_prefix_fields()` + +acf_prefix_fields + +* Changes the prefix for an array of fields by reference. +* @date 5/9/17 +* @since ACF 5.6.0 +* @param array $fields An array of fields. +* @param string $prefix The new prefix. +* @return void + +## `acf_get_sub_field()` + +acf_get_sub_field + +* Searches a field for sub fields matching the given selector. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field ID, key or name. +* @param array $field The parent field array. +* @return (array|false) + +## `acf_search_fields()` + +acf_search_fields + +* Searches an array of fields for one that matches the given identifier. +* @date 12/2/19 +* @since ACF 5.7.11 +* @param (int|string) $id The field ID, key or name. +* @param array $haystack The array of fields. +* @return (int|false) + +## `acf_is_field()` + +acf_is_field + +* Returns true if the given params match a field. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @param mixed $id An optional identifier to search for. +* @return boolean + +## `acf_get_field_ancestors()` + +acf_get_field_ancestors + +* Returns an array of ancestor field ID's or keys. +* @date 22/06/2016 +* @since ACF 5.3.8 +* @param array $field The field array. +* @return array + +## `acf_duplicate_fields()` + +acf_duplicate_fields + +* Duplicate an array of fields. +* @date 16/06/2014 +* @since ACF 5.0.0 +* @param array $fields An array of fields. +* @param integer $parent_id The new parent ID. +* @return array + +## `acf_duplicate_field()` + +acf_duplicate_field + +* Duplicates a field. +* @date 16/06/2014 +* @since ACF 5.0.0 +* @param (int|string) $id The field ID, key or name. +* @param integer $parent_id The new parent ID. +* @return boolean True if field was duplicated. + +## `acf_prepare_fields_for_export()` + +acf_prepare_fields_for_export + +* Returns a modified array of fields ready for export. +* @date 11/03/2014 +* @since ACF 5.0.0 +* @param array $fields An array of fields. +* @return array + +## `acf_prepare_field_for_export()` + +acf_prepare_field_for_export + +* Returns a modified field ready for export. +* @date 11/03/2014 +* @since ACF 5.0.0 +* @param array $field The field array. +* @return array + +## `acf_prepare_fields_for_import()` + +acf_prepare_field_for_import + +* Returns a modified array of fields ready for import. +* @date 11/03/2014 +* @since ACF 5.0.0 +* @param array $fields An array of fields. +* @return array + +## `acf_prepare_field_for_import()` + +acf_prepare_field_for_import + +* Returns a modified field ready for import. +Allows parent fields to modify themselves and also return sub fields. +* @date 11/03/2014 +* @since ACF 5.0.0 +* @param array $field The field array. +* @return array + +--- diff --git a/docs/code-reference/acf-field-group-functions-file.md b/docs/code-reference/acf-field-group-functions-file.md new file mode 100644 index 00000000..905d084b --- /dev/null +++ b/docs/code-reference/acf-field-group-functions-file.md @@ -0,0 +1,287 @@ +# Global Functions + +## `acf_get_field_group()` + +acf_get_field_group + +* Retrieves a field group for the given identifier. +* @date 30/09/13 +* @since ACF 5.0.0 +* @param (int|string) $id The field group ID, key or name. +* @return (array|false) The field group array. + +## `acf_get_raw_field_group()` + +acf_get_raw_field_group + +* Retrieves raw field group data for the given identifier. +* @date 18/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field ID, key or name. +* @return (array|false) The field group array. + +## `acf_get_field_group_post()` + +acf_get_field_group_post + +* Retrieves the field group's WP_Post object. +* @date 18/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field group's ID, key or name. +* @return (array|false) The field group's array. + +## `acf_is_field_group_key()` + +acf_is_field_group_key + +* Returns true if the given identifier is a field group key. +* @date 6/12/2013 +* @since ACF 5.0.0 +* @param string $id The identifier. +* @return boolean + +## `acf_validate_field_group()` + +Ensures the given field group is valid. + +* @date 18/1/19 +* @since ACF 5.7.10 +* @param array $field_group The field group array. +* @return array + +## `acf_get_valid_field_group()` + +acf_get_valid_field_group + +* Ensures the given field group is valid. +* @date 28/09/13 +* @since ACF 5.0.0 +* @param array $field_group The field group array. +* @return array + +## `acf_translate_field_group()` + +acf_translate_field_group + +* Translates a field group's settings. +* @date 8/03/2016 +* @since ACF 5.3.2 +* @param array $field_group The field group array. +* @return array + +## `acf_get_field_groups()` + +acf_get_field_groups + +* Returns and array of field_groups for the given $filter. +* @date 30/09/13 +* @since ACF 5.0.0 +* @param array $filter An array of args to filter results by. +* @return array + +## `acf_get_raw_field_groups()` + +acf_get_raw_field_groups + +* Returns and array of raw field_group data. +* @date 18/1/19 +* @since ACF 5.7.10 +* @return array + +## `acf_filter_field_groups()` + +acf_filter_field_groups + +* Returns a filtered aray of field groups based on the given $args. +* @date 29/11/2013 +* @since ACF 5.0.0 +* @param array $field_groups An array of field groups. +* @param array $args An array of location args. +* @return array + +## `acf_get_field_group_visibility()` + +acf_get_field_group_visibility + +* Returns true if the given field group's location rules match the given $args. +* @date 7/10/13 +* @since ACF 5.0.0 +* @param array $field_groups An array of field groups. +* @param array $args An array of location args. +* @return boolean + +## `acf_update_field_group()` + +acf_update_field_group + +* Updates a field group in the database. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param array $field_group The field group array. +* @return array + +## `_acf_apply_unique_field_group_slug()` + +_acf_apply_unique_field_group_slug + +* Allows full control over 'acf-field-group' slugs. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param string $slug The post slug. +* @param integer $post_ID Post ID. +* @param string $post_status The post status. +* @param string $post_type Post type. +* @param integer $post_parent Post parent ID +* @param string $original_slug The original post slug. + +## `acf_flush_field_group_cache()` + +acf_flush_field_group_cache + +* Deletes all caches for this field group. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param array $field_group The field group array. +* @return void + +## `acf_delete_field_group()` + +acf_delete_field_group + +* Deletes a field group from the database. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param (int|string) $id The field group ID, key or name. +* @return boolean True if field group was deleted. + +## `acf_trash_field_group()` + +acf_trash_field_group + +* Trashes a field group from the database. +* @date 2/10/13 +* @since ACF 5.0.0 +* @param (int|string) $id The field group ID, key or name. +* @return boolean True if field group was trashed. + +## `acf_untrash_field_group()` + +acf_untrash_field_group + +* Restores a field_group from the trash. +* @date 2/10/13 +* @since ACF 5.0.0 +* @param (int|string) $id The field_group ID, key or name. +* @return boolean True if field_group was trashed. + +## `_acf_untrash_field_group_post_status()` + +Filter callback which returns the previous post_status instead of "draft" for the "acf-field-group" post type. + +* Prior to WordPress 5.6.0, this filter was not needed as restored posts were always assigned their original status. +* @since ACF 5.9.5 +* @param string $new_status The new status of the post being restored. +* @param integer $post_id The ID of the post being restored. +* @param string $previous_status The status of the post at the point where it was trashed. +* @return string. + +## `acf_is_field_group()` + +acf_is_field_group + +* Returns true if the given params match a field group. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param array $field_group The field group array. +* @param mixed $id An optional identifier to search for. +* @return boolean + +## `acf_duplicate_field_group()` + +acf_duplicate_field_group + +* Duplicates a field group. +* @date 16/06/2014 +* @since ACF 5.0.0 +* @param (int|string) $id The field_group ID, key or name. +* @param integer $new_post_id Optional post ID to override. +* @return array The new field group. + +## `acf_update_field_group_active_status()` + +Activates or deactivates a field group. + +* @param integer|string $id The field_group ID, key or name. +* @param boolean $activate True if the post should be activated. +* @return boolean + +## `acf_get_field_group_style()` + +acf_get_field_group_style + +* Returns the CSS styles generated from field group settings. +* @date 20/10/13 +* @since ACF 5.0.0 +* @param array $field_group The field group array. +* @return string. + +## `acf_get_field_group_edit_link()` + +acf_get_field_group_edit_link + +* Checks if the current user can edit the field group and returns the edit url. +* @date 23/9/18 +* @since ACF 5.7.7 +* @param integer $post_id The field group ID. +* @return string + +## `acf_prepare_field_group_for_export()` + +acf_prepare_field_group_for_export + +* Returns a modified field group ready for export. +* @date 11/03/2014 +* @since ACF 5.0.0 +* @param array $field_group The field group array. +* @return array + +## `acf_prepare_field_group_for_import()` + +acf_prepare_field_group_for_import + +* Prepares a field group for the import process. +* @date 21/11/19 +* @since ACF 5.8.8 +* @param array $field_group The field group array. +* @return array + +## `acf_import_field_group()` + +acf_import_field_group + +* Imports a field group into the databse. +* @date 11/03/2014 +* @since ACF 5.0.0 +* @param array $field_group The field group array. +* @return array The new field group. + +## `acf_get_combined_field_group_settings_tabs()` + +Returns an array of tabs for the field group settings. +We combine a list of default tabs with filtered tabs. +I.E. Default tabs should be static and should not be changed by the +filtered tabs. + +* @since ACF 6.1 +* @return array Key/value array of the default settings tabs for field group settings. + +## `acf_field_group_has_location_type()` + +Checks if a field group has the provided location rule. + +* @since ACF 6.2.8 +* @param integer $post_id The post ID of the field group. +* @param string $location The location type to check for. +* @return boolean + +--- diff --git a/docs/code-reference/acf-form-functions-file.md b/docs/code-reference/acf-form-functions-file.md new file mode 100644 index 00000000..56c5b524 --- /dev/null +++ b/docs/code-reference/acf-form-functions-file.md @@ -0,0 +1,55 @@ +# Global Functions + +## `acf_set_form_data()` + +acf_set_form_data + +* Sets data about the current form. +* @date 6/10/13 +* @since ACF 5.0.0 +* @param string $name The store name. +* @param array $data Array of data to start the store with. +* @return ACF_Data + +## `acf_get_form_data()` + +acf_get_form_data + +* Gets data about the current form. +* @date 6/10/13 +* @since ACF 5.0.0 +* @param string $name The store name. +* @return mixed + +## `acf_form_data()` + +acf_form_data + +* Called within a form to set important information and render hidden inputs. +* @date 15/10/13 +* @since ACF 5.0.0 +* @return void + +## `acf_save_post()` + +acf_save_post + +* Saves the $_POST data. +* @date 15/10/13 +* @since ACF 5.0.0 +* @param integer|string $post_id The post id. +* @param array $values An array of values to override $_POST. +* @return boolean True if save was successful. + +## `_acf_do_save_post()` + +_acf_do_save_post + +* Private function hooked into 'acf/save_post' to actually save the $_POST data. +This allows developers to hook in before and after ACF has actually saved the data. +* @date 11/1/19 +* @since ACF 5.7.10 +* @param integer|string $post_id The post id. +* @return void + +--- diff --git a/docs/code-reference/acf-helper-functions-file.md b/docs/code-reference/acf-helper-functions-file.md new file mode 100644 index 00000000..d5843a0b --- /dev/null +++ b/docs/code-reference/acf-helper-functions-file.md @@ -0,0 +1,307 @@ +# Global Functions + +## `acf_is_empty()` + +Returns true if the value provided is considered "empty". Allows numbers such as 0. + +* @date 6/7/16 +* @since ACF 5.4.0 +* @param mixed $var The value to check. +* @return boolean + +## `acf_not_empty()` + +Returns true if the value provided is considered "not empty". Allows numbers such as 0. + +* @date 15/7/19 +* @since ACF 5.8.1 +* @param mixed $var The value to check. +* @return boolean + +## `acf_uniqid()` + +Returns a unique numeric based id. + +* @date 9/1/19 +* @since ACF 5.7.10 +* @param string $prefix The id prefix. Defaults to 'acf'. +* @return string + +## `acf_merge_attributes()` + +Merges together two arrays but with extra functionality to append class names. + +* @date 22/1/19 +* @since ACF 5.7.10 +* @param array $array1 An array of attributes. +* @param array $array2 An array of attributes. +* @return array + +## `acf_cache_key()` + +acf_cache_key + +* Returns a filtered cache key. +* @date 25/1/19 +* @since ACF 5.7.11 +* @param string $key The cache key. +* @return string + +## `acf_request_args()` + +acf_request_args + +* Returns an array of $_REQUEST values using the provided defaults. +* @date 28/2/19 +* @since ACF 5.7.13 +* @param array $args An array of args. +* @return array + +## `acf_request_arg()` + +Returns a single $_REQUEST arg with fallback. + +* @date 23/10/20 +* @since ACF 5.9.2 +* @param string $key The property name. +* @param mixed $default The default value to fallback to. +* @return mixed + +## `acf_enable_filter()` + +acf_enable_filter + +* Enables a filter with the given name. +* @date 14/7/16 +* @since ACF 5.4.0 +* @param string name The modifer name. +* @return void + +## `acf_disable_filter()` + +acf_disable_filter + +* Disables a filter with the given name. +* @date 14/7/16 +* @since ACF 5.4.0 +* @param string name The modifer name. +* @return void + +## `acf_is_filter_enabled()` + +acf_is_filter_enabled + +* Returns the state of a filter for the given name. +* @date 14/7/16 +* @since ACF 5.4.0 +* @param string name The modifer name. +* @return array + +## `acf_get_filters()` + +acf_get_filters + +* Returns an array of filters in their current state. +* @date 14/7/16 +* @since ACF 5.4.0 +* @return array + +## `acf_set_filters()` + +acf_set_filters + +* Sets an array of filter states. +* @date 14/7/16 +* @since ACF 5.4.0 +* @param array $filters An Array of modifers +* @return array + +## `acf_disable_filters()` + +acf_disable_filters + +* Disables all filters and returns the previous state. +* @date 14/7/16 +* @since ACF 5.4.0 +* @return array + +## `acf_enable_filters()` + +acf_enable_filters + +* Enables all or an array of specific filters and returns the previous state. +* @date 14/7/16 +* @since ACF 5.4.0 +* @param array $filters An Array of modifers +* @return array + +## `acf_idval()` + +acf_idval + +* Parses the provided value for an ID. +* @date 29/3/19 +* @since ACF 5.7.14 +* @param mixed $value A value to parse. +* @return integer + +## `acf_maybe_idval()` + +acf_maybe_idval + +* Checks value for potential id value. +* @date 6/4/19 +* @since ACF 5.7.14 +* @param mixed $value A value to parse. +* @return mixed + +## `acf_format_numerics()` + +Convert any numeric strings into their equivalent numeric type. This function will +work with both single values and arrays. + +* @param mixed $value Either a single value or an array of values. +* @return mixed + +## `acf_numval()` + +acf_numval + +* Casts the provided value as eiter an int or float using a simple hack. +* @date 11/4/19 +* @since ACF 5.7.14 +* @param mixed $value A value to parse. +* @return (int|float) + +## `acf_idify()` + +acf_idify + +* Returns an id attribute friendly string. +* @date 24/12/17 +* @since ACF 5.6.5 +* @param string $str The string to convert. +* @return string + +## `acf_slugify()` + +Returns a slug friendly string. + +* @date 24/12/17 +* @since ACF 5.6.5 +* @param string $str The string to convert. +* @param string $glue The glue between each slug piece. +* @return string + +## `acf_punctify()` + +Returns a string with correct full stop punctuation. + +* @date 12/7/19 +* @since ACF 5.8.2 +* @param string $str The string to format. +* @return string + +## `acf_did()` + +acf_did + +* Returns true if ACF already did an event. +* @date 30/8/19 +* @since ACF 5.8.1 +* @param string $name The name of the event. +* @return boolean + +## `acf_strlen()` + +Returns the length of a string that has been submitted via $_POST. + +* Uses the following process: + +1. Unslash the string because posted values will be slashed. +2. Decode special characters because wp_kses() will normalize entities. +3. Treat line-breaks as a single character instead of two. +4. Use mb_strlen() to accomodate special characters. + +* @date 04/06/2020 +* @since ACF 5.9.0 +* @param string $str The string to review. +* @return integer + +## `acf_with_default()` + +Returns a value with default fallback. + +* @date 6/4/20 +* @since ACF 5.9.0 +* @param mixed $value The value. +* @param mixed $default_value The default value. +* @return mixed + +## `acf_doing_action()` + +Returns the current priority of a running action. + +* @date 14/07/2020 +* @since ACF 5.9.0 +* @param string $action The action name. +* @return integer|boolean + +## `acf_get_current_url()` + +Returns the current URL. + +* @date 23/01/2015 +* @since ACF 5.1.5 +* @return string + +## `acf_sanitize_request_args()` + +Sanitizes request arguments. + +* @param mixed $args The data to sanitize. +* @return array|boolean|float|integer|mixed|string + +## `acf_sanitize_files_array()` + +Sanitizes file upload arrays. + +* @since ACF 6.0.4 +* @param array $args The file array. +* @return array + +## `acf_sanitize_files_value_array()` + +Sanitizes file upload values within the array. + +* This addresses nested file fields within repeaters and groups. +* @since ACF 6.0.5 +* @param array $array The file upload array. +* @param string $sanitize_function Callback used to sanitize array value. +* @return array + +## `acf_maybe_unserialize()` + +Maybe unserialize, but don't allow any classes. + +* @since ACF 6.1 +* @param string $data String to be unserialized, if serialized. +* @return mixed The unserialized, or original data. + +## `acf_is_beta()` + +Check if ACF is a beta-like release. + +* @since ACF 6.3 +* @return boolean True if the current install version contains a dash, indicating a alpha, beta or RC release. + +## `acf_get_version_when_first_activated()` + +Returns the version of ACF when it was first activated. +However, if ACF was first activated prior to the introduction of the acf_first_activated_version option, +this function returns false (boolean) to indicate that the version could not be determined. + +* @since ACF 6.3 +* @return string|boolean The (string) version of ACF when it was first activated, or false (boolean) if the version could not be determined. + +--- diff --git a/docs/code-reference/acf-hook-functions-file.md b/docs/code-reference/acf-hook-functions-file.md new file mode 100644 index 00000000..0243057f --- /dev/null +++ b/docs/code-reference/acf-hook-functions-file.md @@ -0,0 +1,70 @@ +# Global Functions + +## `acf_add_filter_variations()` + +acf_add_filter_variations + +* Registers variations for the given filter. +* @date 26/1/19 +* @since ACF 5.7.11 +* @param string $filter The filter name. +* @param array $variations An array variation keys. +* @param integer $index The param index to find variation values. +* @return void + +## `acf_add_action_variations()` + +acf_add_action_variations + +* Registers variations for the given action. +* @date 26/1/19 +* @since ACF 5.7.11 +* @param string $action The action name. +* @param array $variations An array variation keys. +* @param integer $index The param index to find variation values. +* @return void + +## `_acf_apply_hook_variations()` + +_acf_apply_hook_variations + +* Applies hook variations during apply_filters() or do_action(). +* @date 25/1/19 +* @since ACF 5.7.11 +* @param mixed +* @return mixed + +## `acf_add_deprecated_filter()` + +acf_add_deprecated_filter + +* Registers a deprecated filter to run during the replacement. +* @date 25/1/19 +* @since ACF 5.7.11 +* @param string $deprecated The deprecated hook. +* @param string $version The version this hook was deprecated. +* @param string $replacement The replacement hook. +* @return void + +## `acf_add_deprecated_action()` + +acf_add_deprecated_action + +* Registers a deprecated action to run during the replacement. +* @date 25/1/19 +* @since ACF 5.7.11 +* @param string $deprecated The deprecated hook. +* @param string $version The version this hook was deprecated. +* @param string $replacement The replacement hook. +* @return void + +## `_acf_apply_deprecated_hook()` + +Applies a deprecated filter during apply_filters() or do_action(). + +* @date 25/1/19 +* @since ACF 5.7.11 +* @param mixed +* @return mixed + +--- diff --git a/docs/code-reference/acf-input-functions-file.md b/docs/code-reference/acf-input-functions-file.md new file mode 100644 index 00000000..088f29d5 --- /dev/null +++ b/docs/code-reference/acf-input-functions-file.md @@ -0,0 +1,244 @@ +# Global Functions + +## `acf_filter_attrs()` + +acf_filter_attrs + +* Filters out empty attrs from the provided array. +* @date 11/6/19 +* @since ACF 5.8.1 +* @param array $attrs The array of attrs. +* @return array + +## `acf_esc_attrs()` + +acf_esc_attrs + +* Generated valid HTML from an array of attrs. +* @date 11/6/19 +* @since ACF 5.8.1 +* @param array $attrs The array of attrs. +* @return string + +## `acf_esc_html()` + +Sanitizes text content and strips out disallowed HTML. + +* This function emulates `wp_kses_post()` with a context of "acf" for extensibility. +* @since ACF 5.9.6 +* @param string $string The string to be escaped +* @return string|false + +## `_acf_kses_allowed_html()` + +Private callback for the "wp_kses_allowed_html" filter used to return allowed HTML for "acf" context. + +* @since ACF 5.9.6 +* @param array $tags An array of allowed tags. +* @param string $context The context name. +* @return array + +## `acf_hidden_input()` + +acf_hidden_input + +* Renders the HTML of a hidden input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_get_hidden_input()` + +acf_get_hidden_input + +* Returns the HTML of a hidden input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_text_input()` + +acf_text_input + +* Renders the HTML of a text input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_get_text_input()` + +acf_get_text_input + +* Returns the HTML of a text input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_file_input()` + +acf_file_input + +* Renders the HTML of a file input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_get_file_input()` + +acf_get_file_input + +* Returns the HTML of a file input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_textarea_input()` + +acf_textarea_input + +* Renders the HTML of a textarea input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_get_textarea_input()` + +acf_get_textarea_input + +* Returns the HTML of a textarea input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_checkbox_input()` + +acf_checkbox_input + +* Renders the HTML of a checkbox input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_get_checkbox_input()` + +acf_get_checkbox_input + +* Returns the HTML of a checkbox input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_radio_input()` + +acf_radio_input + +* Renders the HTML of a radio input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_get_radio_input()` + +acf_get_radio_input + +* Returns the HTML of a radio input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_select_input()` + +acf_select_input + +* Renders the HTML of a select input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_get_select_input()` + +acf_select_input + +* Returns the HTML of a select input. +* @date 3/02/2014 +* @since ACF 5.0.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_walk_select_input()` + +acf_walk_select_input + +* Returns the HTML of a select input's choices. +* @date 27/6/17 +* @since ACF 5.6.0 +* @param array $choices The choices to walk through. +* @param array $values The selected choices. +* @param array $depth The current walk depth. +* @return string + +## `acf_clean_atts()` + +acf_clean_atts + +* See acf_filter_attrs(). +* @date 3/10/17 +* @since ACF 5.6.3 +* @param array $attrs The array of attrs. +* @return string + +## `acf_esc_atts()` + +acf_esc_atts + +* See acf_esc_attrs(). +* @date 27/6/17 +* @since ACF 5.6.0 +* @param array $attrs The array of attrs. +* @return string + +## `acf_esc_attr()` + +acf_esc_attr + +* @date 13/6/19 +* @since ACF 5.8.1 +* @deprecated 5.6.0 +@see acf_esc_attrs(). +* @param array $attrs The array of attrs. +* @return string + +## `acf_esc_attr_e()` + +acf_esc_attr_e + +* See acf_esc_attrs(). +* @date 13/6/19 +* @since ACF 5.8.1 +* @deprecated 5.6.0 +* @param array $attrs The array of attrs. + +## `acf_esc_atts_e()` + +acf_esc_atts_e + +* See acf_esc_attrs(). +* @date 13/6/19 +* @since ACF 5.8.1 +* @deprecated 5.6.0 +* @param array $attrs The array of attrs. + +--- diff --git a/docs/code-reference/acf-internal-post-type-functions-file.md b/docs/code-reference/acf-internal-post-type-functions-file.md new file mode 100644 index 00000000..f209cd5b --- /dev/null +++ b/docs/code-reference/acf-internal-post-type-functions-file.md @@ -0,0 +1,302 @@ +# Global Functions + +## `acf_get_internal_post_type_instance()` + +Gets an instance of an ACF_Internal_Post_Type. + +* @param string $post_type The ACF internal post type to get the instance for. +* @return ACF_Internal_Post_Type|bool The internal post type class instance, or false on failure. + +## `acf_get_internal_post_type()` + +Get an ACF CPT object as an array + +* @param integer $id The post ID being queried. +* @param string $post_type The post type being queried. +* @return array|false The post type object. + +## `acf_get_raw_internal_post_type()` + +Retrieves raw internal post type data for the given identifier. + +* @since ACF 6.1 +* @param integer|string $id The post ID. +* @param string $post_type The post type name. +* @return array|false The internal post type array. + +## `acf_get_internal_post_type_post()` + +Gets a post object from an ACF internal post type. + +* @since ACF 6.1 +* @param integer|string $id The post ID, key, or name. +* @param string $post_type The post type name. +* @return object|boolean The post object, or false on failure. + +## `acf_is_internal_post_type_key()` + +Returns true if the given identifier is a ACF internal post type key. + +* @since ACF 6.1 +* @param string $id The identifier. +* @param string $post_type The ACF post type the key is for. +* @return boolean + +## `acf_validate_internal_post_type()` + +Validates an ACF internal post type. + +* @since ACF 6.1 +* @param array $internal_post_type The internal post type array. +* @param string $post_type_name The post type name. +* @return array|boolean + +## `acf_translate_internal_post_type()` + +Translates the settings for an ACF internal post type. + +* @since ACF 6.1 +* @param array $internal_post_type The ACF post array. +* @param string $post_type The post type name. +* @return array + +## `acf_get_internal_post_type_posts()` + +Returns and array of ACF posts for the given $filter. + +* @since ACF 6.1 +* @param string $post_type The ACF post type to get posts for. +* @param array $filter An array of args to filter results by. +* @return array + +## `acf_get_raw_internal_post_type_posts()` + +Returns an array of raw/unvalidated ACF post data. + +* @since ACF 6.1 +* @param string $post_type The ACF post type to get post data for. +* @return array + +## `acf_filter_internal_post_type_posts()` + +Returns a filtered array of ACF posts based on the given $args. + +* @since ACF 6.1 +* @param array $posts An array of ACF posts. +* @param array $args An array of args to filter by. +* @param string $post_type The ACF post type of the posts being filtered. +* @return array + +## `acf_update_internal_post_type()` + +Updates a internal post type in the database. + +* @since ACF 6.1 +* @param array $internal_post_type Array of data to be saved. +* @param string $post_type_name The internal post type being updated. +* @return array + +## `acf_flush_internal_post_type_cache()` + +Deletes all caches for the provided ACF post. + +* @since ACF 6.1 +* @param array $post The ACF post array. +* @param string $post_type The ACF post type the cache is being cleared for. +* @return void + +## `acf_delete_internal_post_type()` + +Deletes an internal post type from the database. + +* @since ACF 6.1 +* @param integer|string $id The internal post type ID, key or name. +* @param string $post_type_name The post type to be deleted. +* @return boolean True if field group was deleted. + +## `acf_trash_internal_post_type()` + +Trashes an internal post type. + +* @since ACF 6.1 +* @param integer|string $id The internal post type ID, key, or name. +* @param string $post_type_name The post type being trashed. +* @return boolean True if post was trashed. + +## `acf_untrash_internal_post_type()` + +Restores an ACF post from the trash. + +* @since ACF 6.1 +* @param integer|string $id The internal post type ID, key, or name. +* @param string $post_type_name The post type being untrashed. +* @return boolean True if post was untrashed. + +## `acf_is_internal_post_type()` + +Returns true if the given params match an ACF post. + +* @since ACF 6.1 +* @param array $post The ACF post array. +* @param string $post_type The ACF post type. +* @return boolean + +## `acf_duplicate_internal_post_type()` + +Duplicates an ACF post. + +* @since ACF 6.1 +* @param integer|string $id The field_group ID, key or name. +* @param integer $new_post_id Optional ID to override. +* @param string $post_type The post type of the post being duplicated. +* @return array|boolean The new ACF post, or false on failure. + +## `acf_update_internal_post_type_active_status()` + +Activates or deactivates an ACF post. + +* @param integer|string $id The field_group ID, key or name. +* @param boolean $activate True if the post should be activated. +* @param string $post_type The post type being activated/deactivated. +* @return boolean + +## `acf_get_internal_post_type_edit_link()` + +Checks if the current user can edit the field group and returns the edit url. + +* @since ACF 6.1 +* @param integer $post_id The ACF post ID. +* @param string $post_type The ACF post type to get the edit link for. +* @return string + +## `acf_prepare_internal_post_type_for_export()` + +Returns a modified field group ready for export. + +* @since ACF 6.1 +* @param array $post The ACF post array. +* @param string $post_type The post type of the ACF post being exported. +* @return array + +## `acf_export_internal_post_type_as_php()` + +Exports an ACF post as PHP. + +* @since ACF 6.1 +* @param array $post The ACF post array. +* @param string $post_type The post type of the ACF post being exported. +* @return string|boolean + +## `acf_prepare_internal_post_type_for_import()` + +Prepares an ACF post for the import process. + +* @since ACF 6.1 +* @param array $post The ACF post array. +* @param string $post_type The post type of the ACF post being imported. +* @return array + +## `acf_import_internal_post_type()` + +Imports an ACF post into the database. + +* @since ACF 6.1 +* @param array $post The ACF post array. +* @param string $post_type The post type of the ACF post being imported. +* @return array The imported post. + +## `acf_determine_internal_post_type()` + +Tries to determine the ACF post type for the provided key. + +* @param string $key The key to check. +* @return string|boolean + +## `acf_is_valid_internal_post_type_key()` + +Check if the provided key is an identifiable ACF post type. + +* @since ACF 6.2.8 +* @param string $key The key to check. +* @return boolean + +## `acf_internal_post_object_contains_valid_key()` + +Check if the provided post type object contains a valid internal post type key. + +* @since ACF 6.2.8 +* @param array $internal_post_type The post type object array to check it's key. +* @return boolean + +## `acf_get_combined_post_type_settings_tabs()` + +Returns an array of tabs for the post type advanced settings. + +* @since ACF 6.1 +* @return array + +## `acf_get_combined_taxonomy_settings_tabs()` + +Returns an array of tabs for the taxonomy advanced settings. + +* @since ACF 6.1 +* @return array + +## `acf_get_combined_options_page_settings_tabs()` + +Returns an array of tabs for the options page advanced settings + +* @since ACF 6.2 +* @return array + +## `acf_get_post_type_from_screen_value()` + +Converts an _acf_screen or hook value into a post type. + +* @since ACF 6.1 +* @param string $screen The ACF screen being viewed. +* @return string The post type matching the screen or hook value. + +## `acf_validate_internal_post_type_values()` + +Calls the ajax validator for a post type + +* @since ACF 6.1 +* @param string $post_type The post type being validated. +* @return mixed + +## `acf_add_internal_post_type_validation_error()` + +Adds a validation error for ACF internal post types. + +* @since ACF 6.1 +* @param string $name The name of the input. +* @param string $message An optional error message to display. +* @param string $post_type Optional post type the error message is for. +* @return void + +## `acf_get_post_type_from_request_args()` + +Gets an ACF post type from request args and verifies nonce based on action. + +* @since ACF 6.1.5 +* @param string $action The action being performed. +* @return array|boolean + +## `acf_get_taxonomy_from_request_args()` + +Gets an ACF taxonomy from request args and verifies nonce based on action. + +* @since ACF 6.1.5 +* @param string $action The action being performed. +* @return array|boolean + +## `acf_get_ui_options_page_from_request_args()` + +Gets an ACF options page from request args and verifies nonce based on action. + +* @since ACF 6.2 +* @param string $action The action being performed. +* @return array|boolean + +--- diff --git a/docs/code-reference/acf-meta-functions-file.md b/docs/code-reference/acf-meta-functions-file.md new file mode 100644 index 00000000..d9be70a6 --- /dev/null +++ b/docs/code-reference/acf-meta-functions-file.md @@ -0,0 +1,115 @@ +# Global Functions + +## `acf_get_meta()` + +Returns an array of "ACF only" meta for the given post_id. + +* @date 9/10/18 +* @since ACF 5.8.0 +* @param mixed $post_id The post_id for this data. +* @return array + +## `acf_get_option_meta()` + +acf_get_option_meta + +* Returns an array of meta for the given wp_option name prefix in the same format as get_post_meta(). +* @date 9/10/18 +* @since ACF 5.8.0 +* @param string $prefix The wp_option name prefix. +* @return array + +## `acf_get_metadata()` + +Retrieves specific metadata from the database. + +* @date 16/10/2015 +* @since ACF 5.2.3 +* @param integer|string $post_id The post id. +* @param string $name The meta name. +* @param boolean $hidden If the meta is hidden (starts with an underscore). +* @return mixed + +## `acf_update_metadata()` + +Updates metadata in the database. + +* @date 16/10/2015 +* @since ACF 5.2.3 +* @param integer|string $post_id The post id. +* @param string $name The meta name. +* @param mixed $value The meta value. +* @param boolean $hidden If the meta is hidden (starts with an underscore). +* @return integer|boolean Meta ID if the key didn't exist, true on successful update, false on failure. + +## `acf_delete_metadata()` + +Deletes metadata from the database. + +* @date 16/10/2015 +* @since ACF 5.2.3 +* @param integer|string $post_id The post id. +* @param string $name The meta name. +* @param boolean $hidden If the meta is hidden (starts with an underscore). +* @return boolean + +## `acf_copy_metadata()` + +acf_copy_postmeta + +* Copies meta from one post to another. Useful for saving and restoring revisions. +* @date 25/06/2016 +* @since ACF 5.3.8 +* @param (int|string) $from_post_id The post id to copy from. +* @param (int|string) $to_post_id The post id to paste to. +* @return void + +## `acf_copy_postmeta()` + +acf_copy_postmeta + +* Copies meta from one post to another. Useful for saving and restoring revisions. +* @date 25/06/2016 +* @since ACF 5.3.8 +* @deprecated 5.7.11 +* @param integer $from_post_id The post id to copy from. +* @param integer $to_post_id The post id to paste to. +* @return void + +## `acf_get_meta_field()` + +acf_get_meta_field + +* Returns a field using the provided $id and $post_id parameters. +Looks for a reference to help loading the correct field via name. +* @date 21/1/19 +* @since ACF 5.7.10 +* @param string $key The meta name (field name). +* @param (int|string) $post_id The post_id where this field's value is saved. +* @return (array|false) The field array. + +## `acf_get_metaref()` + +acf_get_metaref + +* Retrieves reference metadata from the database. +* @date 16/10/2015 +* @since ACF 5.2.3 +* @param (int|string) $post_id The post id. +* @param string type The reference type (fields|groups). +* @param string $name An optional specific name +* @return mixed + +## `acf_update_metaref()` + +acf_update_metaref + +* Updates reference metadata in the database. +* @date 16/10/2015 +* @since ACF 5.2.3 +* @param (int|string) $post_id The post id. +* @param string type The reference type (fields|groups). +* @param array $references An array of references. +* @return (int|bool) Meta ID if the key didn't exist, true on successful update, false on failure. + +--- diff --git a/docs/code-reference/acf-post-functions-file.md b/docs/code-reference/acf-post-functions-file.md new file mode 100644 index 00000000..3cd39ca2 --- /dev/null +++ b/docs/code-reference/acf-post-functions-file.md @@ -0,0 +1,11 @@ +# Global Functions + +## `acf_get_post_templates()` + +Returns available templates for each post type. + +* @date 29/8/17 +* @since ACF 5.6.2 +* @return array + +--- diff --git a/docs/code-reference/acf-post-type-functions-file.md b/docs/code-reference/acf-post-type-functions-file.md new file mode 100644 index 00000000..e83b88b7 --- /dev/null +++ b/docs/code-reference/acf-post-type-functions-file.md @@ -0,0 +1,187 @@ +# Global Functions + +## `acf_get_post_type()` + +Get an ACF CPT as an array + +* @param integer|string $id The post ID being queried. +* @return array|false The post type object. + +## `acf_get_raw_post_type()` + +Retrieves a raw ACF CPT. + +* @since ACF 6.1 +* @param integer|string $id The post ID. +* @return array|false The internal post type array. + +## `acf_get_post_type_post()` + +Gets a post object for an ACF CPT. + +* @since ACF 6.1 +* @param integer|string $id The post ID, key, or name. +* @return object|boolean The post object, or false on failure. + +## `acf_is_post_type_key()` + +Returns true if the given identifier is an ACF CPT key. + +* @since ACF 6.1 +* @param string $id The identifier. +* @return boolean + +## `acf_validate_post_type()` + +Validates an ACF CPT. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return array|boolean + +## `acf_translate_post_type()` + +Translates the settings for an ACF internal post type. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return array + +## `acf_get_acf_post_types()` + +Returns and array of ACF post types for the given $filter. + +* @since ACF 6.1 +* @param array $filter An array of args to filter results by. +* @return array + +## `acf_get_raw_post_types()` + +Returns an array of raw ACF post types. + +* @since ACF 6.1 +* @return array + +## `acf_filter_post_types()` + +Returns a filtered array of ACF post types based on the given $args. + +* @since ACF 6.1 +* @param array $post_types An array of ACF posts. +* @param array $args An array of args to filter by. +* @return array + +## `acf_update_post_type()` + +Updates an ACF post type in the database. + +* @since ACF 6.1 +* @param array $post_type The main ACF post type array. +* @return array + +## `acf_flush_post_type_cache()` + +Deletes all caches for the provided ACF post type. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return void + +## `acf_delete_post_type()` + +Deletes an ACF post type from the database. + +* @since ACF 6.1 +* @param integer|string $id The ACF post type ID, key or name. +* @return boolean True if post type was deleted. + +## `acf_trash_post_type()` + +Trashes an ACF post type. + +* @since ACF 6.1 +* @param integer|string $id The post type ID, key, or name. +* @return boolean True if post was trashed. + +## `acf_untrash_post_type()` + +Restores an ACF post type from the trash. + +* @since ACF 6.1 +* @param integer|string $id The post type ID, key, or name. +* @return boolean True if post was untrashed. + +## `acf_is_post_type()` + +Returns true if the given params match an ACF post type. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return boolean + +## `acf_duplicate_post_type()` + +Duplicates an ACF post type. + +* @since ACF 6.1 +* @param integer|string $id The ACF post type ID, key or name. +* @param integer $new_post_id Optional ID to override. +* @return array|boolean The new ACF post type, or false on failure. + +## `acf_update_post_type_active_status()` + +Activates or deactivates an ACF post type. + +* @param integer|string $id The ACF post type ID, key or name. +* @param boolean $activate True if the post type should be activated. +* @return boolean + +## `acf_get_post_type_edit_link()` + +Checks if the current user can edit the post type and returns the edit url. + +* @since ACF 6.1 +* @param integer $post_id The ACF post type ID. +* @return string + +## `acf_prepare_post_type_for_export()` + +Returns a modified ACF post type ready for export. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return array + +## `acf_export_post_type_as_php()` + +Exports an ACF post type as PHP. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return string|boolean + +## `acf_prepare_post_type_for_import()` + +Prepares an ACF post type for the import process. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return array + +## `acf_import_post_type()` + +Imports an ACF post type into the database. + +* @since ACF 6.1 +* @param array $post_type The ACF post type array. +* @return array The imported post type. + +## `acf_export_enter_title_here()` + +Exports the "Enter Title Here" text for the provided ACF post types. + +* @since ACF 6.2.1 +* @param array $post_types The post types being exported. +* @return string + +--- diff --git a/docs/code-reference/acf-taxonomy-functions-file.md b/docs/code-reference/acf-taxonomy-functions-file.md new file mode 100644 index 00000000..1e9215df --- /dev/null +++ b/docs/code-reference/acf-taxonomy-functions-file.md @@ -0,0 +1,179 @@ +# Global Functions + +## `acf_get_taxonomy()` + +Get an ACF taxonomy as an array + +* @param integer|string $id The post ID being queried. +* @return array|false The taxonomy object. + +## `acf_get_raw_taxonomy()` + +Retrieves a raw ACF taxonomy. + +* @since ACF 6.1 +* @param integer|string $id The post ID. +* @return array|false The taxonomy array. + +## `acf_get_taxonomy_post()` + +Gets a post object for an ACF taxonomy. + +* @since ACF 6.1 +* @param integer|string $id The post ID, key, or name. +* @return object|boolean The post object, or false on failure. + +## `acf_is_taxonomy_key()` + +Returns true if the given identifier is an ACF taxonomy key. + +* @since ACF 6.1 +* @param string $id The identifier. +* @return boolean + +## `acf_validate_taxonomy()` + +Validates an ACF taxonomy. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return array|boolean + +## `acf_translate_taxonomy()` + +Translates the settings for an ACF taxonomy. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return array + +## `acf_get_acf_taxonomies()` + +Returns an array of ACF taxonomies for the given $filter. + +* @since ACF 6.1 +* @param array $filter An array of args to filter results by. +* @return array + +## `acf_get_raw_taxonomies()` + +Returns an array of raw ACF taxonomies. + +* @since ACF 6.1 +* @return array + +## `acf_filter_taxonomies()` + +Returns a filtered array of ACF taxonomies based on the given $args. + +* @since ACF 6.1 +* @param array $taxonomies An array of ACF taxonomies. +* @param array $args An array of args to filter by. +* @return array + +## `acf_update_taxonomy()` + +Updates an ACF taxonomy in the database. + +* @since ACF 6.1 +* @param array $taxonomy The main ACF taxonomy array. +* @return array + +## `acf_flush_taxonomy_cache()` + +Deletes all caches for the provided ACF taxonomy. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return void + +## `acf_delete_taxonomy()` + +Deletes an ACF taxonomy from the database. + +* @since ACF 6.1 +* @param integer|string $id The ACF taxonomy ID, key or name. +* @return boolean True if taxonomy was deleted. + +## `acf_trash_taxonomy()` + +Trashes an ACF taxonomy. + +* @since ACF 6.1 +* @param integer|string $id The taxonomy ID, key, or name. +* @return boolean True if taxonomy was trashed. + +## `acf_untrash_taxonomy()` + +Restores an ACF taxonomy from the trash. + +* @since ACF 6.1 +* @param integer|string $id The taxonomy ID, key, or name. +* @return boolean True if taxonomy was untrashed. + +## `acf_is_taxonomy()` + +Returns true if the given params match an ACF taxonomy. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return boolean + +## `acf_duplicate_taxonomy()` + +Duplicates an ACF taxonomy. + +* @since ACF 6.1 +* @param integer|string $id The ACF taxonomy ID, key or name. +* @param integer $new_post_id Optional ID to override. +* @return array|boolean The new ACF taxonomy, or false on failure. + +## `acf_update_taxonomy_active_status()` + +Activates or deactivates an ACF taxonomy. + +* @param integer|string $id The ACF taxonomy ID, key or name. +* @param boolean $activate True if the taxonomy should be activated. +* @return boolean + +## `acf_get_taxonomy_edit_link()` + +Checks if the current user can edit the taxonomy and returns the edit url. + +* @since ACF 6.1 +* @param integer $post_id The ACF taxonomy ID. +* @return string + +## `acf_prepare_taxonomy_for_export()` + +Returns a modified ACF taxonomy ready for export. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return array + +## `acf_export_taxonomy_as_php()` + +Exports an ACF taxonomy as PHP. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return string|boolean + +## `acf_prepare_taxonomy_for_import()` + +Prepares an ACF taxonomy for the import process. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return array + +## `acf_import_taxonomy()` + +Imports an ACF taxonomy into the database. + +* @since ACF 6.1 +* @param array $taxonomy The ACF taxonomy array. +* @return array The imported taxonomy. + +--- diff --git a/docs/code-reference/acf-user-functions-file.md b/docs/code-reference/acf-user-functions-file.md new file mode 100644 index 00000000..f84c0155 --- /dev/null +++ b/docs/code-reference/acf-user-functions-file.md @@ -0,0 +1,42 @@ +# Global Functions + +## `acf_get_users()` + +acf_get_users + +* Similar to the get_users() function but with extra functionality. +* @date 9/1/19 +* @since ACF 5.7.10 +* @param array $args The query args. +* @return array + +## `acf_get_user_result()` + +acf_get_user_result + +* Returns a result containing "id" and "text" for the given user. +* @date 21/5/19 +* @since ACF 5.8.1 +* @param WP_User $user The user object. +* @return array + +## `acf_get_user_role_labels()` + +acf_get_user_role_labels + +* Returns an array of user roles in the format "name => label". +* @date 20/5/19 +* @since ACF 5.8.1 +* @param array $roles A specific array of roles. +* @return array + +## `acf_allow_unfiltered_html()` + +acf_allow_unfiltered_html + +* Returns true if the current user is allowed to save unfiltered HTML. +* @date 9/1/19 +* @since ACF 5.7.10 +* @return boolean + +--- diff --git a/docs/code-reference/acf-utility-functions-file.md b/docs/code-reference/acf-utility-functions-file.md new file mode 100644 index 00000000..afbfe908 --- /dev/null +++ b/docs/code-reference/acf-utility-functions-file.md @@ -0,0 +1,84 @@ +# Global Functions + +## `acf_new_instance()` + +acf_new_instance + +* Creates a new instance of the given class and stores it in the instances data store. +* @date 9/1/19 +* @since ACF 5.7.10 +* @param string $class The class name. +* @return object The instance. + +## `acf_get_instance()` + +Returns an instance for the given class. + +* @date 9/1/19 +* @since ACF 5.7.10 +* @param string $class The class name. +* @return object The instance. + +## `acf_register_store()` + +acf_register_store + +* Registers a data store. +* @date 9/1/19 +* @since ACF 5.7.10 +* @param string $name The store name. +* @param array $data Array of data to start the store with. +* @return ACF_Data + +## `acf_get_store()` + +acf_get_store + +* Returns a data store. +* @date 9/1/19 +* @since ACF 5.7.10 +* @param string $name The store name. +* @return ACF_Data + +## `acf_switch_stores()` + +acf_switch_stores + +* Triggered when switching between sites on a multisite installation. +* @date 13/2/19 +* @since ACF 5.7.11 +* @param integer $site_id New blog ID. +* @param int prev_blog_id Prev blog ID. +* @return void + +## `acf_get_path()` + +acf_get_path + +* Returns the plugin path to a specified file. +* @date 28/9/13 +* @since ACF 5.0.0 +* @param string $filename The specified file. +* @return string + +## `acf_get_url()` + +acf_get_url + +* Returns the plugin url to a specified file. +This function also defines the ACF_URL constant. +* @date 12/12/17 +* @since ACF 5.6.8 +* @param string $filename The specified file. +* @return string + +## `acf_include()` + +Includes a file within the ACF plugin. + +* @date 10/3/14 +* @since ACF 5.0.0 +* @param string $filename The specified file. +* @return void + +--- diff --git a/docs/code-reference/acf-value-functions-file.md b/docs/code-reference/acf-value-functions-file.md new file mode 100644 index 00000000..b04a45fd --- /dev/null +++ b/docs/code-reference/acf-value-functions-file.md @@ -0,0 +1,100 @@ +# Global Functions + +## `acf_get_reference()` + +acf_get_reference + +* Retrieves the field key for a given field name and post_id. +* @date 26/1/18 +* @since ACF 5.6.5 +* @param string $field_name The name of the field. eg 'sub_heading'. +* @param mixed $post_id The post_id of which the value is saved against. +* @return string The field key. + +## `acf_get_value()` + +Retrieves the value for a given field and post_id. + +* @date 28/09/13 +* @since ACF 5.0.0 +* @param integer|string $post_id The post id. +* @param array $field The field array. +* @return mixed + +## `acf_format_value()` + +Returns a formatted version of the provided value. + +* @since ACF 5.0.0 +* @param mixed $value The field value. +* @param integer|string $post_id The post id. +* @param array $field The field array. +* @param boolean $escape_html Ask the field for a HTML safe version of it's output. +* @return mixed + +## `acf_update_value()` + +acf_update_value + +* Updates the value for a given field and post_id. +* @date 28/09/13 +* @since ACF 5.0.0 +* @param mixed $value The new value. +* @param (int|string) $post_id The post id. +* @param array $field The field array. +* @return boolean + +## `acf_update_values()` + +acf_update_values + +* Updates an array of values. +* @date 26/2/19 +* @since ACF 5.7.13 +* @param array values The array of values. +* @param (int|string) $post_id The post id. +* @return void + +## `acf_flush_value_cache()` + +acf_flush_value_cache + +* Deletes all cached data for this value. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param (int|string) $post_id The post id. +* @param string $field_name The field name. +* @return void + +## `acf_delete_value()` + +acf_delete_value + +* Deletes the value for a given field and post_id. +* @date 28/09/13 +* @since ACF 5.0.0 +* @param (int|string) $post_id The post id. +* @param array $field The field array. +* @return boolean + +## `acf_preview_value()` + +acf_preview_value + +* Return a human friendly 'preview' for a given field value. +* @date 28/09/13 +* @since ACF 5.0.0 +* @param mixed $value The new value. +* @param (int|string) $post_id The post id. +* @param array $field The field array. +* @return boolean + +## `acf_log_invalid_field_notice()` + +Potentially log an error if a field doesn't exist when we expect it to. + +* @param array $field An array representing the field that a value was requested for. +* @param string $function The function that noticed the problem. +* @return void + +--- diff --git a/docs/code-reference/acf-wp-functions-file.md b/docs/code-reference/acf-wp-functions-file.md new file mode 100644 index 00000000..7b2379e4 --- /dev/null +++ b/docs/code-reference/acf-wp-functions-file.md @@ -0,0 +1,39 @@ +# Global Functions + +## `acf_get_object_type()` + +Returns a WordPress object type. + +* @date 1/4/20 +* @since ACF 5.9.0 +* @param string $object_type The object type (post, term, user, etc). +* @param string $object_subtype Optional object subtype (post type, taxonomy). +* @return object + +## `acf_decode_post_id()` + +Decodes a post_id value such as 1 or "user_1" into an array containing the type and ID. + +* @date 25/1/19 +* @since ACF 5.7.11 +* @param (int|string) $post_id The post id. +* @return array + +## `acf_get_object_type_rest_base()` + +Determine the REST base for a post type or taxonomy object. Note that this is not intended for use +with term or post objects but is, instead, to be used with the underlying WP_Post_Type and WP_Taxonomy +instances. + +* @param WP_Post_Type|WP_Taxonomy $type_object +* @return string|null + +## `acf_get_object_id()` + +Extract the ID of a given object/array. This supports all expected types handled by our update_fields() and +load_fields() callbacks. + +* @param WP_Post|WP_User|WP_Term|WP_Comment|array $object +* @return integer|mixed|null + +--- diff --git a/docs/code-reference/admin/admin-notices-file.md b/docs/code-reference/admin/admin-notices-file.md new file mode 100644 index 00000000..0818539e --- /dev/null +++ b/docs/code-reference/admin/admin-notices-file.md @@ -0,0 +1,32 @@ +# Global Functions + +## `acf_new_admin_notice()` + +Instantiates and returns a new model. + +* @date 23/12/18 +* @since ACF 5.8.0 +* @param array $data Optional data to set. +* @return ACF_Admin_Notice + +## `acf_render_admin_notices()` + +Renders all admin notices HTML. + +* @date 10/1/19 +* @since ACF 5.7.10 +* @return void + +## `acf_add_admin_notice()` + +Creates and returns a new notice. + +* @date 17/10/13 +* @since ACF 5.0.0 +* @param string $text The admin notice text. +* @param string $type The type of notice (warning, error, success, info). +* @param boolean $dismissible Is this notification dismissible (default true) (since 5.11.0). +* @param boolean $persisted Store once a notice has been dismissed per user and prevent showing it again. (since 6.1.0). +* @return ACF_Admin_Notice + +--- diff --git a/docs/code-reference/admin/admin-tools-file.md b/docs/code-reference/admin/admin-tools-file.md new file mode 100644 index 00000000..5a62a44b --- /dev/null +++ b/docs/code-reference/admin/admin-tools-file.md @@ -0,0 +1,31 @@ +# Global Functions + +## `acf_register_admin_tool()` + +Alias of acf()->admin_tools->register_tool() + +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @param ACF_Admin_Tool $class The tool class. +* @return void + +## `acf_get_admin_tools_url()` + +* This function will return the admin URL to the tools page +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @return string The URL to the tools page. + +## `acf_get_admin_tool_url()` + +This function will return the admin URL to the tools page + +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @param string $tool The tool name. +* @return string The URL to a particular tool's page. + +--- diff --git a/docs/code-reference/admin/index.md b/docs/code-reference/admin/index.md new file mode 100644 index 00000000..d5e69d2a --- /dev/null +++ b/docs/code-reference/admin/index.md @@ -0,0 +1,6 @@ +# Admin + +## Files + +- [Admin Notices File](admin-notices-file) +- [Admin Tools File](admin-tools-file) diff --git a/docs/code-reference/admin/views/global/index.md b/docs/code-reference/admin/views/global/index.md new file mode 100644 index 00000000..b35124f9 --- /dev/null +++ b/docs/code-reference/admin/views/global/index.md @@ -0,0 +1,5 @@ +# Admin Views Global + +## Files + +- [Navigation File](navigation-file) diff --git a/docs/code-reference/admin/views/global/navigation-file.md b/docs/code-reference/admin/views/global/navigation-file.md new file mode 100644 index 00000000..723256cf --- /dev/null +++ b/docs/code-reference/admin/views/global/navigation-file.md @@ -0,0 +1,13 @@ +# Global Functions + +## `acf_print_menu_section()` + +Helper function for looping over the provided menu items +and echoing out the necessary markup. + +* @since ACF 6.2 +* @param array $menu_items An array of menu items to print. +* @param string $section The section being printed. +* @return void + +--- diff --git a/docs/code-reference/api/api-helpers-file.md b/docs/code-reference/api/api-helpers-file.md new file mode 100644 index 00000000..82ed0883 --- /dev/null +++ b/docs/code-reference/api/api-helpers-file.md @@ -0,0 +1,1027 @@ +# Global Functions + +## `acf_is_array()` + +This function will return true for a non empty array + +* @since ACF 5.4.0 +* @param mixed $array The variable to test. +* @return boolean + +## `acf_has_setting()` + +Alias of acf()->has_setting() + +* @since ACF 5.6.5 +* @param string $name Name of the setting to check for. +* @return boolean + +## `acf_raw_setting()` + +acf_raw_setting + +* alias of acf()->get_setting() +* @since ACF 5.6.5 +* @param n/a +* @return n/a + +## `acf_update_setting()` + +acf_update_setting + +* alias of acf()->update_setting() +* @since ACF 5.0.0 +* @param $name (string) +* @param $value (mixed) +* @return n/a + +## `acf_validate_setting()` + +acf_validate_setting + +* Returns the changed setting name if available. +* @since ACF 5.6.5 +* @param n/a +* @return n/a + +## `acf_get_setting()` + +Alias of acf()->get_setting() + +* @since ACF 5.0.0 +* @param string $name The name of the setting to test. +* @param string $value An optional default value for the setting if it doesn't exist. +* @return n/a + +## `acf_get_internal_post_types()` + +Return an array of ACF's internal post type names + +* @since ACF 6.1 +* @return array An array of ACF's internal post type names + +## `acf_append_setting()` + +acf_append_setting + +* This function will add a value into the settings array found in the acf object +* @since ACF 5.0.0 +* @param $name (string) +* @param $value (mixed) +* @return n/a + +## `acf_get_data()` + +acf_get_data + +* Returns data. +* @since ACF 5.0.0 +* @param string $name +* @return mixed + +## `acf_set_data()` + +acf_set_data + +* Sets data. +* @since ACF 5.0.0 +* @param string $name +* @param mixed $value +* @return n/a + +## `acf_append_data()` + +Appends data to an existing key. + +* @since ACF 5.9.0 +* @param string $name The data name. +* @param mixed $data The data to append to name. + +## `acf_init()` + +Alias of acf()->init() - the core ACF init function. + +* @since ACF 5.0.0 + +## `acf_has_done()` + +acf_has_done + +* This function will return true if this action has already been done +* @since ACF 5.3.2 +* @param $name (string) +* @return (boolean) + +## `acf_get_external_path()` + +This function will return the path to a file within an external folder + +* @since ACF 5.5.8 +* @param string $file Directory path. +* @param string $path Optional file path. +* @return string File path. + +## `acf_get_external_dir()` + +This function will return the url to a file within an internal ACF folder + +* @since ACF 5.5.8 +* @param string $file Directory path. +* @param string $path Optional file path. +* @return string File path. + +## `acf_plugin_dir_url()` + +This function will calculate the url to a plugin folder. +Different to the WP plugin_dir_url(), this function can calculate for urls outside of the plugins folder (theme include). + +* @since ACF 5.6.8 +* @param string $file A file path inside the ACF plugin to get the plugin directory path from. +* @return string The plugin directory path. + +## `acf_parse_args()` + +This function will merge together 2 arrays and also convert any numeric values to ints + +* @since ACF 5.0.0 +* @param array $args The configured arguments array. +* @param array $defaults The default properties for the passed args to inherit. +* @return array $args Parsed arguments with defaults applied. + +## `acf_parse_types()` + +acf_parse_types + +* This function will convert any numeric values to int and trim strings +* @since ACF 5.0.0 +* @param $var (mixed) +* @return $var (mixed) + +## `acf_parse_type()` + +acf_parse_type + +* description +* @since ACF 5.0.9 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_get_view()` + +This function will load in a file from the 'admin/views' folder and allow variables to be passed through + +* @since ACF 5.0.0 +* @param string $view_path +* @param array $view_args + +## `acf_merge_atts()` + +acf_merge_atts + +* description +* @since ACF 5.0.9 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_nonce_input()` + +This function will create and echo a basic nonce input + +* @since ACF 5.6.0 +* @param string $nonce The nonce parameter string. + +## `acf_extract_var()` + +This function will remove the var from the array, and return the var + +* @since ACF 5.0.0 +* @param array $extract_array an array passed as reference to be extracted. +* @param string $key The key to extract from the array. +* @param mixed $default_value The default value if it doesn't exist in the extract array. +* @return mixed Extracted var or default. + +## `acf_extract_vars()` + +This function will remove the vars from the array, and return the vars + +* @since ACF 5.0.0 +* @param array $extract_array an array passed as reference to be extracted. +* @param array $keys An array of keys to extract from the original array. +* @return array An array of extracted values. + +## `acf_get_sub_array()` + +acf_get_sub_array + +* This function will return a sub array of data +* @since ACF 5.3.2 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_get_post_types()` + +Returns an array of post type names. + +* @since ACF 5.0.0 +* @param array $args Optional. An array of key => value arguments to match against the post type objects. Default empty array. +* @return array A list of post type names. + +## `acf_get_post_stati()` + +Function acf_get_post_stati() + +* Returns an array of post status names. +* @since ACF 6.1.0 +* @param array $args Optional. An array of key => value arguments to match against the post status objects. Default empty array. +* @return array A list of post status names. + +## `acf_get_pretty_post_statuses()` + +Function acf_get_pretty_post_statuses() + +* Returns a clean array of post status names. +* @since ACF 6.1.0 +* @param array $post_statuses Optional. An array of post status objects. Default empty array. +* @return array An array of post status names. + +## `acf_get_post_type_label()` + +acf_get_post_type_label + +* This function will return a pretty label for a specific post_type +* @since ACF 5.4.0 +* @param $post_type (string) +* @return (string) + +## `acf_get_post_status_label()` + +Function acf_get_post_status_label() + +* This function will return a pretty label for a specific post_status +* @since ACF 6.1.0 +* @param string $post_status The post status. +* @return string The post status label. + +## `acf_verify_nonce()` + +acf_verify_nonce + +* This function will look at the $_POST['_acf_nonce'] value and return true or false +* @since ACF 5.0.0 +* @param $nonce (string) +* @return (boolean) + +## `acf_verify_ajax()` + +Returns true if the current AJAX request is valid. +It's action will also allow WPML to set the lang and avoid AJAX get_posts issues + +* @since ACF 5.2.3 +* @param string $nonce The nonce to check. +* @param string $action The action of the nonce. +* @return boolean + +## `acf_get_image_sizes()` + +acf_get_image_sizes + +* This function will return an array of available image sizes +* @since ACF 5.0.0 +* @param n/a +* @return (array) + +## `acf_version_compare()` + +acf_version_compare + +* Similar to the version_compare() function but with extra functionality. +* @since ACF 5.5.0 +* @param string $left The left version number. +* @param string $compare The compare operator. +* @param string $right The right version number. +* @return boolean + +## `acf_get_full_version()` + +acf_get_full_version + +* This function will remove any '-beta1' or '-RC1' strings from a version +* @since ACF 5.5.0 +* @param $version (string) +* @return (string) + +## `acf_get_terms()` + +acf_get_terms + +* This function is a wrapper for the get_terms() function +* @since ACF 5.4.0 +* @param $args (array) +* @return (array) + +## `acf_get_taxonomy_terms()` + +acf_get_taxonomy_terms + +* This function will return an array of available taxonomy terms +* @since ACF 5.0.0 +* @param $taxonomies (array) +* @return (array) + +## `acf_decode_taxonomy_terms()` + +acf_decode_taxonomy_terms + +* This function decodes the $taxonomy:$term strings into a nested array +* @since ACF 5.0.0 +* @param $terms (array) +* @return (array) + +## `acf_decode_taxonomy_term()` + +acf_decode_taxonomy_term + +* This function will return the taxonomy and term slug for a given value +* @since ACF 5.0.0 +* @param $string (string) +* @return (array) + +## `acf_array()` + +acf_array + +* Casts the value into an array. +* @since ACF 5.7.10 +* @param mixed $val The value to cast. +* @return array + +## `acf_unarray()` + +Returns a non-array value. + +* @since ACF 5.8.10 +* @param mixed $val The value to review. +* @return mixed + +## `acf_get_array()` + +acf_get_array + +* This function will force a variable to become an array +* @since ACF 5.0.0 +* @param $var (mixed) +* @return (array) + +## `acf_get_numeric()` + +acf_get_numeric + +* This function will return numeric values +* @since ACF 5.4.0 +* @param $value (mixed) +* @return (mixed) + +## `acf_get_posts()` + +acf_get_posts + +* Similar to the get_posts() function but with extra functionality. +* @since ACF 5.1.5 +* @param array $args The query args. +* @return array + +## `_acf_query_remove_post_type()` + +_acf_query_remove_post_type + +* This function will remove the 'wp_posts.post_type' WHERE clause completely +When using 'post__in', this clause is unneccessary and slow. +* @since ACF 5.1.5 +* @param $sql (string) +* @return $sql + +## `acf_get_grouped_posts()` + +acf_get_grouped_posts + +* This function will return all posts grouped by post_type +This is handy for select settings +* @since ACF 5.0.0 +* @param $args (array) +* @return (array) + +## `_acf_orderby_post_type()` + +The internal ACF function to add order by post types for use in `acf_get_grouped_posts` + +* @param string $orderby The current orderby value for a query. +* @param object $wp_query The WP_Query. +* @return string The potentially modified orderby string. + +## `acf_get_pretty_user_roles()` + +acf_get_pretty_user_roles + +* description +* @since ACF 5.3.2 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_get_grouped_users()` + +acf_get_grouped_users + +* This function will return all users grouped by role +This is handy for select settings +* @since ACF 5.0.0 +* @param $args (array) +* @return (array) + +## `acf_json_encode()` + +acf_json_encode + +* Returns json_encode() ready for file / database use. +* @since ACF 5.0.0 +* @param array $json The array of data to encode. +* @return string + +## `acf_str_exists()` + +acf_str_exists + +* This function will return true if a sub string is found +* @since ACF 5.0.0 +* @param $needle (string) +* @param $haystack (string) +* @return (boolean) + +## `acf_debug()` + +A legacy function designed for developer debugging. + +* @deprecated 6.2.6 Removed for security, but keeping the definition in case third party devs have it in their code. +* @since ACF 5.0.0 +* @return false + +## `acf_debug_start()` + +A legacy function designed for developer debugging. + +* @deprecated 6.2.6 Removed for security, but keeping the definition in case third party devs have it in their code. +* @since ACF 5.0.0 +* @return false + +## `acf_debug_end()` + +A legacy function designed for developer debugging. + +* @deprecated 6.2.6 Removed for security, but keeping the definition in case third party devs have it in their code. +* @since ACF 5.0.0 +* @return false + +## `acf_encode_choices()` + +acf_encode_choices + +* description +* @since ACF 5.0.0 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_str_replace()` + +acf_str_replace + +* This function will replace an array of strings much like str_replace +The difference is the extra logic to avoid replacing a string that has alread been replaced +This is very useful for replacing date characters as they overlap with eachother +* @since ACF 5.3.8 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_split_date_time()` + +acf_split_date_time + +* This function will split a format string into seperate date and time +* @since ACF 5.3.8 +* @param $date_time (string) +* @return $formats (array) + +## `acf_convert_date_to_php()` + +acf_convert_date_to_php + +* This fucntion converts a date format string from JS to PHP +* @since ACF 5.0.0 +* @param $date (string) +* @return (string) + +## `acf_convert_date_to_js()` + +acf_convert_date_to_js + +* This fucntion converts a date format string from PHP to JS +* @since ACF 5.0.0 +* @param $date (string) +* @return (string) + +## `acf_convert_time_to_php()` + +acf_convert_time_to_php + +* This fucntion converts a time format string from JS to PHP +* @since ACF 5.0.0 +* @param $time (string) +* @return (string) + +## `acf_convert_time_to_js()` + +acf_convert_time_to_js + +* This fucntion converts a date format string from PHP to JS +* @since ACF 5.0.0 +* @param $time (string) +* @return (string) + +## `acf_update_user_setting()` + +acf_update_user_setting + +* description +* @since ACF 5.0.0 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_get_user_setting()` + +acf_get_user_setting + +* description +* @since ACF 5.0.0 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_in_array()` + +acf_in_array + +* description +* @since ACF 5.0.0 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_get_valid_post_id()` + +acf_get_valid_post_id + +* This function will return a valid post_id based on the current screen / parameter +* @since ACF 5.0.0 +* @param $post_id (mixed) +* @return $post_id (mixed) + +## `acf_get_post_id_info()` + +acf_get_post_id_info + +* This function will return the type and id for a given $post_id string +* @since ACF 5.4.0 +* @param $post_id (mixed) +* @return $info (array) + +## `acf_isset_termmeta()` + +acf_isset_termmeta + +* This function will return true if the termmeta table exists +<https://developer.wordpress.org/reference/functions/get_term_meta/> +* @since ACF 5.4.0 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_upload_files()` + +This function will walk through the $_FILES data and upload each found. + +* @since ACF 5.0.9 +* @param array $ancestors An internal parameter, not required. + +## `acf_upload_file()` + +acf_upload_file + +* This function will uploade a $_FILE +* @since ACF 5.0.9 +* @param $uploaded_file (array) array found from $_FILE data +* @return $id (int) new attachment ID + +## `acf_update_nested_array()` + +acf_update_nested_array + +* This function will update a nested array value. Useful for modifying the $_POST array +* @since ACF 5.0.9 +* @param $array (array) target array to be updated +* @param $ancestors (array) array of keys to navigate through to find the child +* @param $value (mixed) The new value +* @return (boolean) + +## `acf_is_screen()` + +acf_is_screen + +* This function will return true if all args are matched for the current screen +* @since ACF 5.1.5 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_is_acf_admin_screen()` + +Check if we're in an ACF admin screen + +* @since ACF 6.2.2 +* @return boolean Returns true if the current screen is an ACF admin screen. + +## `acf_maybe_get()` + +acf_maybe_get + +* This function will return a var if it exists in an array +* @since ACF 5.1.5 +* @param $array (array) the array to look within +* @param $key (key) the array key to look for. Nested values may be found using '/' +* @param $default (mixed) the value returned if not found +* @return $post_id (int) + +## `acf_get_attachment()` + +Returns an array of attachment data. + +* @since ACF 5.1.5 +* @param integer|WP_Post The attachment ID or object +* @return array|false + +## `acf_get_truncated()` + +This function will truncate and return a string + +* @since ACF 5.0.0 +* @param string $text The text to truncate. +* @param integer $length The number of characters to allow in the string. +* @return string + +## `acf_current_user_can_admin()` + +acf_current_user_can_admin + +* This function will return true if the current user can administrate the ACF field groups +* @since ACF 5.1.5 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_current_user_can_edit_post()` + +Wrapper function for current_user_can( 'edit_post', $post_id ). + +* @since ACF 6.3.4 +* @param integer $post_id The post ID to check. +* @return boolean + +## `acf_get_filesize()` + +acf_get_filesize + +* This function will return a numeric value of bytes for a given filesize string +* @since ACF 5.1.5 +* @param $size (mixed) +* @return (int) + +## `acf_format_filesize()` + +acf_format_filesize + +* This function will return a formatted string containing the filesize and unit +* @since ACF 5.1.5 +* @param $size (mixed) +* @return (int) + +## `acf_get_valid_terms()` + +acf_get_valid_terms + +* This function will replace old terms with new split term ids +* @since ACF 5.1.5 +* @param $terms (int|array) +* @param $taxonomy (string) +* @return $terms + +## `acf_validate_attachment()` + +acf_validate_attachment + +* This function will validate an attachment based on a field's restrictions and return an array of errors +* @since ACF 5.2.3 +* @param $attachment (array) attachment data. Changes based on context +* @param $field (array) field settings containing restrictions +* @param context (string) $file is different when uploading / preparing +* @return $errors (array) + +## `acf_translate()` + +acf_translate + +* This function will translate a string using the new 'l10n_textdomain' setting +Also works for arrays which is great for fields - select -> choices +* @since ACF 5.3.2 +* @param $string (mixed) string or array containins strings to be translated +* @return $string + +## `acf_maybe_add_action()` + +acf_maybe_add_action + +* This function will determine if the action has already run before adding / calling the function +* @since ACF 5.3.2 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_is_row_collapsed()` + +acf_is_row_collapsed + +* This function will return true if the field's row is collapsed +* @since ACF 5.3.2 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_get_attachment_image()` + +Return an image tag for the provided attachment ID + +* @since ACF 5.5.0 +* @deprecated 6.3.2 +* @param integer $attachment_id The attachment ID +* @param string $size The image size to use in the image tag. +* @return false + +## `acf_get_post_thumbnail()` + +acf_get_post_thumbnail + +* This function will return a thumbail image url for a given post +* @since ACF 5.3.8 +* @param $post (obj) +* @param $size (mixed) +* @return (string) + +## `acf_get_browser()` + +acf_get_browser + +* Returns the name of the current browser. +* @since ACF 5.0.0 +* @return string + +## `acf_is_ajax()` + +acf_is_ajax + +* This function will reutrn true if performing a wp ajax call +* @since ACF 5.3.8 +* @param n/a +* @return (boolean) + +## `acf_format_date()` + +Returns a date value in a formatted string. + +* @since ACF 5.3.8 +* @param string $value The date value to format. +* @param string $format The format to use. +* @return string + +## `acf_clear_log()` + +Previously, deletes the debug.log file. + +* @since ACF 5.7.10 +* @deprecated 6.2.7 + +## `acf_log()` + +acf_log + +* description +* @since ACF 5.3.8 +* @param $post_id (int) +* @return $post_id (int) + +## `acf_dev_log()` + +acf_dev_log + +* Used to log variables only if ACF_DEV is defined +* @since ACF 5.7.4 +* @param mixed +* @return void + +## `acf_doing()` + +acf_doing + +* This function will tell ACF what task it is doing +* @since ACF 5.3.8 +* @param $event (string) +* @param context (string) +* @return n/a + +## `acf_is_doing()` + +acf_is_doing + +* This function can be used to state what ACF is doing, or to check +* @since ACF 5.3.8 +* @param $event (string) +* @param context (string) +* @return (boolean) + +## `acf_is_plugin_active()` + +acf_is_plugin_active + +* This function will return true if the ACF plugin is active +* May be included within a theme or other plugin + +* @since ACF 5.4.0 +* @param $basename (int) +* @return $post_id (int) + +## `acf_send_ajax_results()` + +acf_send_ajax_results + +* This function will print JSON data for a Select2 AJAX query +* @since ACF 5.4.0 +* @param $response (array) +* @return n/a + +## `acf_is_sequential_array()` + +acf_is_sequential_array + +* This function will return true if the array contains only numeric keys +* @source <http://stackoverflow.com/questions/173400/how-to-check-if-php-array-is-associative-or-sequential> +* @since ACF 5.4.0 +* @param $array (array) +* @return (boolean) + +## `acf_is_associative_array()` + +acf_is_associative_array + +* This function will return true if the array contains one or more string keys +* @source <http://stackoverflow.com/questions/173400/how-to-check-if-php-array-is-associative-or-sequential> +* @since ACF 5.4.0 +* @param $array (array) +* @return (boolean) + +## `acf_add_array_key_prefix()` + +acf_add_array_key_prefix + +* This function will add a prefix to all array keys +Useful to preserve numeric keys when performing array_multisort +* @since ACF 5.4.0 +* @param $array (array) +* @param $prefix (string) +* @return (array) + +## `acf_remove_array_key_prefix()` + +acf_remove_array_key_prefix + +* This function will remove a prefix to all array keys +Useful to preserve numeric keys when performing array_multisort +* @since ACF 5.4.0 +* @param $array (array) +* @param $prefix (string) +* @return (array) + +## `acf_connect_attachment_to_post()` + +This function will connect an attacment (image etc) to the post +Used to connect attachements uploaded directly to media that have not been attaced to a post + +* @since ACF 5.8.0 Added filter to prevent connection. +* @since ACF 5.5.4 +* @param integer $attachment_id The attachment ID. +* @param integer $post_id The post ID. +* @return boolean True if attachment was connected. + +## `acf_encrypt()` + +acf_encrypt + +* This function will encrypt a string using PHP +<https://bhoover.com/using-php-openssl_encrypt-openssl_decrypt-encrypt-decrypt-data/> +* @since ACF 5.5.8 +* @param $data (string) +* @return (string) + +## `acf_decrypt()` + +acf_decrypt + +* This function will decrypt an encrypted string using PHP +<https://bhoover.com/using-php-openssl_encrypt-openssl_decrypt-encrypt-decrypt-data/> +* @since ACF 5.5.8 +* @param $data (string) +* @return (string) + +## `acf_parse_markdown()` + +acf_parse_markdown + +* A very basic regex-based Markdown parser function based off [slimdown](https://gist.github.com/jbroadway/2836900). +* @since ACF 5.7.2 +* @param string $text The string to parse. +* @return string + +## `acf_get_sites()` + +acf_get_sites + +* Returns an array of sites for a network. +* @since ACF 5.4.0 +* @return array + +## `acf_convert_rules_to_groups()` + +acf_convert_rules_to_groups + +* Converts an array of rules from ACF4 to an array of groups for ACF5 +* @since ACF 5.7.4 +* @param array $rules An array of rules. +* @param string $anyorall The anyorall setting used in ACF4. Defaults to 'any'. +* @return array + +## `acf_register_ajax()` + +acf_register_ajax + +* Regsiters an ajax callback. +* @since ACF 5.7.7 +* @param string $name The ajax action name. +* @param array $callback The callback function or array. +* @param boolean $public Whether to allow access to non logged in users. +* @return void + +## `acf_str_camel_case()` + +acf_str_camel_case + +* Converts a string into camelCase. +Thanks to <https://stackoverflow.com/questions/31274782/convert-array-keys-from-underscore-case-to-camelcase-recursively> +* @since ACF 5.8.0 +* @param string $string The string ot convert. +* @return string + +## `acf_array_camel_case()` + +acf_array_camel_case + +* Converts all aray keys to camelCase. +* @since ACF 5.8.0 +* @param array $array The array to convert. +* @return array + +## `acf_is_block_editor()` + +Returns true if the current screen is using the block editor. + +* @since ACF 5.8.0 +* @return boolean + +## `acf_get_wp_reserved_terms()` + +Return an array of the WordPress reserved terms + +* @since ACF 6.1 +* @return array The WordPress reserved terms list. + +## `acf_is_multisite_sub_site()` + +Detect if we're on a multisite subsite. + +* @since ACF 6.2.4 +* @return boolean true if we're in a multisite install and not on the main site + +## `acf_is_multisite_main_site()` + +Detect if we're on a multisite main site. + +* @since ACF 6.2.4 +* @return boolean true if we're in a multisite install and on the main site + +--- diff --git a/docs/code-reference/api/api-template-file.md b/docs/code-reference/api/api-template-file.md new file mode 100644 index 00000000..a450c413 --- /dev/null +++ b/docs/code-reference/api/api-template-file.md @@ -0,0 +1,327 @@ +# Global Functions + +## `get_field()` + +This function will return a custom field value for a specific field name/key + post_id. +There is a 3rd parameter to turn on/off formating. This means that an image field will not use +its 'return option' to format the value but return only what was saved in the database + +* @since ACF 3.6 +* @param string $selector The field name or key. +* @param mixed $post_id The post_id of which the value is saved against. +* @param boolean $format_value Whether or not to format the value as described above. +* @param boolean $escape_html If we're formatting the value, make sure it's also HTML safe. +* @return mixed + +## `the_field()` + +This function is the same as echo get_field(), but will escape the value for safe HTML output regardless of parameters. + +* @since ACF 1.0.3 +* @param string $selector The field name or key. +* @param mixed $post_id The post_id of which the value is saved against. +* @param boolean $format_value Enable formatting of value. Default true. +* @return void + +## `_acf_log_escaped_html()` + +Logs instances of ACF successfully escaping unsafe HTML. + +* @since ACF 6.2.5 +* @param string $function The function that resulted in HTML being escaped. +* @param string $selector The selector (field key, name, etc.) passed to that function. +* @param array $field The field being queried when HTML was escaped. +* @param mixed $post_id The post ID the function was called on. +* @return void + +## `_acf_get_escaped_html_log()` + +Returns an array of instances where HTML was altered due to escaping in the_field or a shortcode. + +* @since ACF 6.2.5 +* @return array + +## `_acf_update_escaped_html_log()` + +Updates the array of instances where HTML was altered due to escaping in the_field or a shortcode. + +* @since ACF 6.2.5 +* @param array $escaped The array of instances. +* @return boolean True on success, or false on failure. + +## `_acf_delete_escaped_html_log()` + +Deletes the array of instances where HTML was altered due to escaping in the_field or a shortcode. +Since 6.2.7, also clears the legacy `acf_will_escape_html_log` option to clean up. + +* @since ACF 6.2.5 +* @return boolean True on success, or false on failure. + +## `get_field_object()` + +This function will return an array containing all the field data for a given field_name. + +* @since ACF 3.6 +* @param string $selector The field name or key. +* @param mixed $post_id The post_id of which the value is saved against. +* @param boolean $format_value Whether to format the field value. +* @param boolean $load_value Whether to load the field value. +* @param boolean $escape_html Should the field return a HTML safe formatted value if $format_value is true. +* @return array|false $field + +## `acf_maybe_get_field()` + +This function will return a field for the given selector. +It will also review the field_reference to ensure the correct field is returned which makes it useful for the template API + +* @since ACF 5.2.3 +* @param $selector (mixed) identifier of field. Can be an ID, key, name or post object +* @param $post_id (mixed) the post_id of which the value is saved against +* @param $strict (boolean) if true, return a field only when a field key is found. +* @return $field (array) + +## `acf_maybe_get_sub_field()` + +This function will attempt to find a sub field + +* @since ACF 5.4.0 +* @param $post_id (int) +* @return $post_id (int) + +## `get_fields()` + +This function will return an array containing all the custom field values for a specific post_id. +The function is not very elegant and wastes a lot of PHP memory / SQL queries if you are not using all the values. + +* @since ACF 3.6 +* @param mixed $post_id The post_id of which the value is saved against. +* @param boolean $format_value Whether or not to format the field value. +* @param boolean $escape_html Should the field return a HTML safe formatted value if $format_value is true. +* @return array|false Associative array where field name => field value, or false on failure. + +## `get_field_objects()` + +This function will return an array containing all the custom field objects for a specific post_id. +The function is not very elegant and wastes a lot of PHP memory / SQL queries if you are not using all the fields / values. + +* @since ACF 3.6 +* @param mixed $post_id The post_id of which the value is saved against. +* @param boolean $format_value Whether or not to format the field value. +* @param boolean $load_value Whether or not to load the field value. +* @param boolean $escape_html Should the field return a HTML safe formatted value if $format_value is true. +* @return array|false Associative array where field name => field, or false on failure. + +## `have_rows()` + +Checks if a field (such as Repeater or Flexible Content) has any rows of data to loop over. +This function is intended to be used in conjunction with the_row() to step through available values. + +* @since ACF 4.3.0 +* @param string $selector The field name or field key. +* @param mixed $post_id The post ID where the value is saved. Defaults to the current post. +* @return boolean + +## `the_row()` + +This function will progress the global repeater or flexible content value 1 row + +* @since ACF 4.3.0 +* @param N/A +* @return (array) the current row data + +## `get_row_sub_field()` + +This function is used inside a 'has_sub_field' while loop to return a sub field object + +* @since ACF 5.3.8 +* @param $selector (string) +* @return (array) + +## `get_row_sub_value()` + +This function is used inside a 'has_sub_field' while loop to return a sub field value + +* @since ACF 5.3.8 +* @param $selector (string) +* @return (mixed) + +## `reset_rows()` + +This function will find the current loop and unset it from the global array. +To be used when loop finishes or a break is used + +* @since ACF 5.0.0 +* @param $hard_reset (boolean) completely wipe the global variable, or just unset the active row +* @return (boolean) + +## `has_sub_field()` + +This function is used inside a while loop to return either true or false (loop again or stop). +When using a repeater or flexible content field, it will loop through the rows until +there are none left or a break is detected + +* @since ACF 1.0.3 +* @param $field_name (string) the field name +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) + +## `has_sub_fields()` + +Alias of has_sub_field + +## `get_sub_field()` + +This function is used inside a 'has_sub_field' while loop to return a sub field value + +* @since ACF 1.0.3 +* @param string $selector The field name or key. +* @param boolean $format_value Whether or not to format the value as described above. +* @param boolean $escape_html If we're formatting the value, make sure it's also HTML safe. +* @return mixed + +## `the_sub_field()` + +This function is the same as echo get_sub_field(), but will escape the value for safe HTML output. + +* @since ACF 1.0.3 +* @param string $field_name The field name. +* @param boolean $format_value Enable formatting of value. When false, the field value will be escaped at this level with `acf_esc_html`. Default true. +* @return void + +## `get_sub_field_object()` + +This function is used inside a 'has_sub_field' while loop to return a sub field object + +* @since ACF 3.5.8.1 +* @param string $selector The field name or key. +* @param boolean $format_value Whether to format the field value. +* @param boolean $load_value Whether to load the field value. +* @param boolean $escape_html Should the field return a HTML safe formatted value. +* @return mixed + +## `get_row_layout()` + +This function will return a string representation of the current row layout within a 'have_rows' loop + +* @since ACF 3.0.6 +* @return mixed + +## `acf_shortcode()` + +This function is used to add basic shortcode support for the ACF plugin +eg. [acf field="heading" post_id="123" format_value="1"] + +* @since ACF 1.1.1 +* @param array $atts The shortcode attributes. +* @return string|void + +## `update_field()` + +This function will update a value in the database + +* @since ACF 3.1.9 +* @param string $selector The field name or key. +* @param mixed $value The value to save in the database. +* @param mixed $post_id The post_id of which the value is saved against. +* @return boolean + +## `update_sub_field()` + +This function will update a value of a sub field in the database + +* @since ACF 5.0.0 +* @param $selector (mixed) the sub field name or key, or an array of ancestors +* @param $value (mixed) the value to save in the database +* @param $post_id (mixed) the post_id of which the value is saved against +* @return boolean + +## `delete_field()` + +This function will remove a value from the database + +* @since ACF 3.1.9 +* @param $selector (string) the field name or key +* @param $post_id (mixed) the post_id of which the value is saved against +* @return boolean + +## `delete_sub_field()` + +This function will delete a value of a sub field in the database + +* @since ACF 5.0.0 +* @param $selector (mixed) the sub field name or key, or an array of ancestors +* @param $value (mixed) the value to save in the database +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) + +## `add_row()` + +This function will add a row of data to a field + +* @since ACF 5.2.3 +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) + +## `add_sub_row()` + +This function will add a row of data to a field + +* @since ACF 5.2.3 +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) + +## `update_row()` + +This function will update a row of data to a field + +* @since ACF 5.2.3 +* @param $selector (string) +* @param $i (int) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) + +## `update_sub_row()` + +This function will add a row of data to a field + +* @since ACF 5.2.3 +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) + +## `delete_row()` + +This function will delete a row of data from a field + +* @since ACF 5.2.3 +* @param $selector (string) +* @param $i (int) +* @param $post_id (mixed) +* @return (boolean) + +## `delete_sub_row()` + +This function will add a row of data to a field + +* @since ACF 5.2.3 +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) + +## `create_field()` + +Depreceated Functions + +* These functions are outdated +* @since ACF 1.0.0 +* @param n/a +* @return n/a + +--- diff --git a/docs/code-reference/api/api-term-file.md b/docs/code-reference/api/api-term-file.md new file mode 100644 index 00000000..07c46271 --- /dev/null +++ b/docs/code-reference/api/api-term-file.md @@ -0,0 +1,158 @@ +# Global Functions + +## `acf_get_taxonomies()` + +Returns an array of taxonomy names. + +* @date 7/10/13 +* @since ACF 5.0.0 +* @param array $args An array of args used in the get_taxonomies() function. +* @return array An array of taxonomy names. + +## `acf_get_taxonomies_for_post_type()` + +acf_get_taxonomies_for_post_type + +* Returns an array of taxonomies for a given post type(s) +* @date 7/9/18 +* @since ACF 5.7.5 +* @param string|array $post_types The post types to compare against. +* @return array + +## `acf_get_taxonomy_labels()` + +Returns an array of taxonomies in the format "name => label" for use in a select field. + +* @date 3/8/18 +* @since ACF 5.7.2 +* @param array $taxonomies Optional. An array of specific taxonomies to return. +* @return array + +## `acf_get_term_title()` + +acf_get_term_title + +* Returns the title for this term object. +* @date 10/9/18 +* @since ACF 5.0.0 +* @param object $term The WP_Term object. +* @return string + +## `acf_get_grouped_terms()` + +acf_get_grouped_terms + +* Returns an array of terms for the given query $args and groups by taxonomy name. +* @date 2/8/18 +* @since ACF 5.7.2 +* @param array $args An array of args used in the get_terms() function. +* @return array + +## `_acf_terms_clauses()` + +_acf_terms_clauses + +* Used in the 'terms_clauses' filter to order terms by taxonomy name. +* @date 2/8/18 +* @since ACF 5.7.2 +* @param array $pieces Terms query SQL clauses. +* @param array $taxonomies An array of taxonomies. +* @param array $args An array of terms query arguments. +* @return array $pieces + +## `acf_get_pretty_taxonomies()` + +acf_get_pretty_taxonomies + +* Deprecated in favor of acf_get_taxonomy_labels() function. +* @date 7/10/13 +* @since ACF 5.0.0 +* @deprecated 5.7.2 + +## `acf_get_term()` + +acf_get_term + +* Similar to get_term() but with some extra functionality. +* @date 19/8/18 +* @since ACF 5.7.3 +* @param mixed $term_id The term ID or a string of "taxonomy:slug". +* @param string $taxonomy The taxonomyname. +* @return WP_Term + +## `acf_encode_term()` + +acf_encode_term + +* Returns a "taxonomy:slug" string for a given WP_Term. +* @date 27/8/18 +* @since ACF 5.7.4 +* @param WP_Term $term The term object. +* @return string + +## `acf_decode_term()` + +acf_decode_term + +* Decodes a "taxonomy:slug" string into an array of taxonomy and slug. +* @date 27/8/18 +* @since ACF 5.7.4 +* @param WP_Term $term The term object. +* @return string + +## `acf_get_encoded_terms()` + +acf_get_encoded_terms + +* Returns an array of WP_Term objects from an array of encoded strings +* @date 9/9/18 +* @since ACF 5.7.5 +* @param array $values The array of encoded strings. +* @return array + +## `acf_get_choices_from_terms()` + +acf_get_choices_from_terms + +* Returns an array of choices from the terms provided. +* @date 8/9/18 +* @since ACF 5.7.5 +* @param array $values and array of WP_Terms objects or encoded strings. +* @param string $format The value format (term_id, slug). +* @return array + +## `acf_get_choices_from_grouped_terms()` + +acf_get_choices_from_grouped_terms + +* Returns an array of choices from the grouped terms provided. +* @date 8/9/18 +* @since ACF 5.7.5 +* @param array $value A grouped array of WP_Terms objects. +* @param string $format The value format (term_id, slug). +* @return array + +## `acf_get_choice_from_term()` + +acf_get_choice_from_term + +* Returns an array containing the id and text for this item. +* @date 10/9/18 +* @since ACF 5.7.6 +* @param object $item The item object such as WP_Post or WP_Term. +* @param string $format The value format (term_id, slug) +* @return array + +## `acf_get_term_post_id()` + +Returns a valid post_id string for a given term and taxonomy. +No longer needed since WP introduced the termmeta table in WP 4.4. + +* @date 6/2/17 +* @since ACF 5.5.6 +* @deprecated 5.9.2 +* @param $taxonomy (string) The taxonomy type. +* @param $term_id (int) The term ID. +* @return (string) + +--- diff --git a/docs/code-reference/api/index.md b/docs/code-reference/api/index.md new file mode 100644 index 00000000..ecd5c673 --- /dev/null +++ b/docs/code-reference/api/index.md @@ -0,0 +1,7 @@ +# Api + +## Files + +- [Api Helpers File](api-helpers-file) +- [Api Template File](api-template-file) +- [Api Term File](api-term-file) diff --git a/docs/code-reference/assets-file.md b/docs/code-reference/assets-file.md new file mode 100644 index 00000000..a4c6258a --- /dev/null +++ b/docs/code-reference/assets-file.md @@ -0,0 +1,47 @@ +# Global Functions + +## `acf_localize_text()` + +Appends an array of i18n data for localization. + +* @date 13/4/18 +* @since ACF 5.6.9 +* @param array $text An array of text for i18n. +* @return void + +## `acf_localize_data()` + +Appends an array of l10n data for localization. + +* @date 13/4/18 +* @since ACF 5.6.9 +* @param array $data An array of data for l10n. +* @return void + +## `acf_enqueue_script()` + +Enqueues a script with support for supplemental inline scripts. + +* @date 27/4/20 +* @since ACF 5.9.0 +* @param string $name The script name. +* @return void + +## `acf_enqueue_scripts()` + +Enqueues the input scripts required for fields. + +* @date 13/4/18 +* @since ACF 5.6.9 +* @param array $args See ACF_Assets::enqueue_scripts() for a list of args. +* @return void + +## `acf_enqueue_uploader()` + +Enqueues the WP media uploader scripts and styles. + +* @date 27/10/2014 +* @since ACF 5.0.9 +* @return void + +--- diff --git a/docs/code-reference/blocks-file.md b/docs/code-reference/blocks-file.md new file mode 100644 index 00000000..53adcc7a --- /dev/null +++ b/docs/code-reference/blocks-file.md @@ -0,0 +1,341 @@ +# Global Functions + +## `acf_add_block_namespace()` + +Prefix block names for SCF blocks registered through block.json + +* @since ACF 6.0.0 +* @param array $metadata The block metadata array. +* @return array The original array with a prefixed block name if it's an ACF block. + +## `acf_handle_json_block_registration()` + +Handle an SCF block registered through block.json + +* @since ACF 6.0.0 +* @param array $settings The compiled block settings. +* @param array $metadata The raw json metadata. +* @return array Block registration settings with ACF required additions. + +## `acf_is_acf_block_json()` + +Check if a block.json block is an SCF block. + +* @since ACF 6.0.0 +* @param array $metadata The raw block metadata array. +* @return boolean + +## `acf_register_block_type()` + +Registers a block type. + +* @date 18/2/19 +* @since ACF 5.8.0 +* @param array $block The block settings. +* @return (array|false) + +## `acf_register_block()` + +See acf_register_block_type(). + +* @date 18/2/19 +* @since ACF 5.7.12 +* @param array $block The block settings. +* @return (array|false) + +## `acf_has_block_type()` + +Returns true if a block type exists for the given name. + +* @since ACF 5.7.12 +* @param string $name The block type name. +* @return boolean + +## `acf_get_block_types()` + +Returns an array of all registered block types. + +* @since ACF 5.7.12 +* @return array + +## `acf_get_block_type()` + +Returns a block type for the given name. + +* @since ACF 5.7.12 +* @param string $name The block type name. +* @return (array|null) + +## `acf_remove_block_type()` + +Removes a block type for the given name. + +* @since ACF 5.7.12 +* @param string $name The block type name. +* @return void + +## `acf_get_block_type_default_attributes()` + +Returns an array of default attribute settings for a block type. + +* @date 19/11/18 +* @since ACF 5.8.0 +* @param array $block_type A block configuration array. +* @return array + +## `acf_validate_block_type()` + +Validates a block type ensuring all settings exist. + +* @since ACF 5.8.0 +* @param array $block The block settings. +* @return array + +## `acf_prepare_block()` + +Prepares a block for use in render_callback by merging in all settings and attributes. + +* @since ACF 5.8.0 +* @param array $block The block props. +* @return array|boolean + +## `acf_add_back_compat_attributes()` + +Add backwards compatible attribute values. + +* @since ACF 6.0.0 +* @param array $block The original block. +* @return array Modified block array with backwards compatibility attributes. + +## `acf_get_block_back_compat_attribute_key_array()` + +Get back compat new values and old values. + +* @since ACF 6.0.0 +* @return array back compat key array. + +## `acf_render_block_callback()` + +The render callback for all ACF blocks. + +* @date 28/10/20 +* @since ACF 5.9.2 +* @param array $attributes The block attributes. +* @param string $content The block content. +* @param WP_Block $wp_block The block instance (since WP 5.5). +* @return string The block HTML. + +## `acf_rendered_block()` + +Returns the rendered block HTML. + +* @date 28/2/19 +* @since ACF 5.7.13 +* @param array $attributes The block attributes. +* @param string $content The block content. +* @param boolean $is_preview Whether or not the block is being rendered for editing preview. +* @param integer $post_id The current post being edited or viewed. +* @param WP_Block $wp_block The block instance (since WP 5.5). +* @param array $context The block context array. +* @param boolean $is_ajax_render Whether or not this is an ACF AJAX render. +* @return string The block HTML. + +## `acf_render_block()` + +Renders the block HTML. + +* @since ACF 5.7.12 +* @param array $attributes The block attributes. +* @param string $content The block content. +* @param boolean $is_preview Whether or not the block is being rendered for editing preview. +* @param integer $post_id The current post being edited or viewed. +* @param WP_Block $wp_block The block instance (since WP 5.5). +* @param array $context The block context array. +* @return void|string + +## `acf_block_render_template()` + +Locate and include an ACF block's template. + +* @since ACF 6.0.4 +* @param array $block The block props. +* @param string $content The block content. +* @param boolean $is_preview Whether this is a preview render. +* @param int $post_id The post ID this block is saved to. +* @param object $wp_block The block instance object. +* @param array $context The block context array. + +## `acf_get_block_fields()` + +Returns an array of all fields for the given block. + +* @date 24/10/18 +* @since ACF 5.8.0 +* @param array $block The block props. +* @return array + +## `acf_enqueue_block_assets()` + +Enqueues and localizes block scripts and styles. + +* @since ACF 5.7.13 +* @return void + +## `acf_enqueue_block_type_assets()` + +Enqueues scripts and styles for a specific block type. + +* @since ACF 5.7.13 +* @param array $block_type The block type settings. +* @return void + +## `acf_ajax_fetch_block()` + +Handles the ajax request for block data. + +* @since ACF 5.7.13 +* @return void + +## `acf_get_empty_block_form_html()` + +Render the empty block form for when a block has no fields assigned. + +* @since ACF 6.0.0 +* @param string $block_name The block name current being rendered. +* @return string The html that makes up a block form with no fields. + +## `acf_parse_save_blocks()` + +Parse content that may contain HTML block comments and saves ACF block meta. + +* @since ACF 5.7.13 +* @param string $text Content that may contain HTML block comments. +* @return string + +## `acf_parse_save_blocks_callback()` + +Callback used in preg_replace to modify ACF Block comment. + +* @since ACF 5.7.13 +* @param array $matches The preg matches. +* @return string + +## `acf_get_block_id()` + +Return or generate a block ID. + +* @since ACF 6.0.0 +* @param array $attributes A block attributes array. +* @param array $context The block context array, defaults to an empty array. +* @param boolean $force If we should generate a new block ID even if one exists. +* @return string A block ID. + +## `acf_ensure_block_id_prefix()` + +Ensure a block ID always has a block_ prefix for post meta internals. + +* @since ACF 6.0.0 +* @param string $block_id A possibly non-prefixed block ID. +* @return string A prefixed block ID. + +## `acf_serialize_block_attributes()` + +This directly copied from the WordPress core `serialize_block_attributes()` function. + +* We need this in order to make sure that block attributes are stored in a way that is +consistent with how Gutenberg sends them over from JS, and so that things like wp_kses() +work as expected. Copied from core to get around a bug that was fixed in 5.8.1 or on the off chance +that folks are still using WP 5.3 or below. +* TODO: Remove this when we refactor `acf_parse_save_blocks_callback()` to use `serialize_block()`, +or when we're confident that folks aren't using WP versions prior to 5.8. +* @since ACF 5.12 +* @param array $block_attributes Attributes object. +* @return string Serialized attributes. + +## `acf_get_block_validation_state()` + +Handle validating a block's fields and return the validity, and any errors. + +* This function can use values loaded into Local Meta, which means they have to be +converted back to the data format before they can be validated. +* @since ACF 6.3 +* @param array $block An array of the block's data attribute. +* @param boolean $using_defaults True if the block is currently being generated with default values. Default false. +* @param boolean $use_post_data True if we should validate the POSTed data rather than local meta values. Default false. +* @param boolean $on_load True if we're validating as part of a render. This is essentially the same as a first load. Default false. +* @return array An array containing a valid boolean, and an errors array. + +## `acf_validate_block_from_post_data()` + +Handle the specific validation for a block from POSTed values. + +* @since ACF 6.3.1 +* @param array $block The block object containing the POSTed values and other block data. +* @return array|boolean An array containing the validation errors, or false if there are no errors. + +## `acf_validate_block_from_local_meta()` + +Handle the specific validation for a block from local meta. + +* This function uses the values loaded into Local Meta, which means they have to be +converted back to the data format because they can be validated. +* @since ACF 6.3.1 +* @param string $block_id The block ID. +* @param array $field_objects The field objects in local meta to be validated. +* @param boolean $using_defaults True if this is the first load of the block, when special validation may apply. +* @return array|boolean An array containing the validation errors, or false if there are no errors. + +## `acf_set_after_rest_media_enqueue_reset_flag()` + +Set ACF data before a rest call if media scripts have not been enqueued yet for after REST reset. + +* @date 07/06/22 +* @since ACF 6.0 +* @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response The WordPress response object. +* @return mixed + +## `acf_reset_media_enqueue_after_rest()` + +Reset wp_enqueue_media action count after REST call so it can happen inside the main execution if required. + +* @date 07/06/22 +* @since ACF 6.0 +* @param WP_REST_Response|WP_HTTP_Response|WP_Error|mixed $response The WordPress response object. +* @return mixed + +## `acf_block_uses_post_meta()` + +Checks if the provided block is configured to save/load post meta. + +* @since ACF 6.3 +* @param array $block The block to check. +* @return boolean + +## `acf_add_block_meta_values()` + +Loads ACF field values from the post meta if the block is configured to do so. + +* @since ACF 6.3 +* @param array $block The block to get values for. +* @param integer $post_id The ID of the post to retrieve meta from. +* @return array + +## `acf_save_block_meta_values()` + +Stores ACF field values in post meta for any blocks configured to do so. + +* @since ACF 6.3 +* @param integer $post_id The ID of the post being saved. +* @param WP_Post $post The post object. +* @return void + +## `acf_get_block_meta_values_to_save()` + +Iterates over blocks in post content and retrieves values +that need to be saved to post meta. + +* @since ACF 6.3 +* @param string $content The content saved for the post. +* @return array An array containing the field values that need to be saved. + +--- diff --git a/docs/code-reference/compatibility-file.md b/docs/code-reference/compatibility-file.md new file mode 100644 index 00000000..73b3bbd1 --- /dev/null +++ b/docs/code-reference/compatibility-file.md @@ -0,0 +1,12 @@ +# Global Functions + +## `acf_get_compatibility()` + +Returns true if compatibility is enabled for the given component. + +* @date 20/1/15 +* @since ACF 5.1.5 +* @param string $name The name of the component to check. +* @return boolean + +--- diff --git a/docs/code-reference/deprecated-file.md b/docs/code-reference/deprecated-file.md new file mode 100644 index 00000000..6704f919 --- /dev/null +++ b/docs/code-reference/deprecated-file.md @@ -0,0 +1,71 @@ +# Global Functions + +## `acf_render_field_wrap_label()` + +acf_render_field_wrap_label + +* Renders the field's label. +* @date 19/9/17 +* @since ACF 5.6.3 +* @deprecated 5.6.5 +* @param array $field The field array. +* @return void + +## `acf_render_field_wrap_description()` + +acf_render_field_wrap_description + +* Renders the field's instructions. +* @date 19/9/17 +* @since ACF 5.6.3 +* @deprecated 5.6.5 +* @param array $field The field array. +* @return void + +## `acf_get_fields_by_id()` + +Returns and array of fields for the given $parent_id. + +* @date 27/02/2014 +* @since ACF 5.0.0. +* @deprecated 5.7.11 +* @param integer $parent_id The parent ID. +* @return array + +## `acf_update_option()` + +acf_update_option + +* A wrapper for the WP update_option but provides logic for a 'no' autoload +* @date 4/01/2014 +* @since ACF 5.0.0 +* @deprecated 5.7.11 +* @param string $option The option name. +* @param string $value The option value. +* @param string $autoload An optional autoload value. +* @return boolean + +## `acf_get_field_reference()` + +acf_get_field_reference + +* Finds the field key for a given field name and post_id. +* @date 26/1/18 +* @since ACF 5.6.5 +* @deprecated 5.6.8 +* @param string $field_name The name of the field. eg 'sub_heading' +* @param mixed $post_id The post_id of which the value is saved against +* @return string $reference The field key + +## `acf_get_dir()` + +acf_get_dir + +* Returns the plugin url to a specified file. +* @date 28/09/13 +* @since ACF 5.0.0 +* @deprecated 5.6.8 +* @param string $filename The specified file. +* @return string + +--- diff --git a/docs/code-reference/fields-file.md b/docs/code-reference/fields-file.md new file mode 100644 index 00000000..99ef2b27 --- /dev/null +++ b/docs/code-reference/fields-file.md @@ -0,0 +1,134 @@ +# Global Functions + +## `acf_register_field_type()` + +alias of acf()->fields->register_field_type() + +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @param n/a +* @return n/a + +## `acf_register_field_type_info()` + +alias of acf()->fields->register_field_type_info() + +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @param n/a +* @return n/a + +## `acf_get_field_type()` + +alias of acf()->fields->get_field_type() + +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @param n/a +* @return n/a + +## `acf_get_field_types()` + +alias of acf()->fields->get_field_types() + +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @param n/a +* @return n/a + +## `acf_get_field_types_info()` + +acf_get_field_types_info + +* Returns an array containing information about each field type +* @date 18/6/18 +* @since ACF 5.6.9 +* @param type $var Description. Default. +* @return type Description. + +## `acf_is_field_type()` + +alias of acf()->fields->is_field_type() + +* @type function +* @date 31/5/17 +* @since ACF 5.6.0 +* @param n/a +* @return n/a + +## `acf_get_field_type_prop()` + +This function will return a field type's property + +* @type function +* @date 1/10/13 +* @since ACF 5.0.0 +* @param n/a +* @return (array) + +## `acf_get_field_type_label()` + +This function will return the label of a field type + +* @type function +* @date 1/10/13 +* @since ACF 5.0.0 +* @param n/a +* @return (array) + +## `acf_field_type_supports()` + +Returns the value of a field type "supports" property. + +* @since ACF 6.2.5 +* @param string $name The name of the field type. +* @param string $prop The name of the supports property. +* @param mixed $default The default value if the property is not set. +* @return mixed The value of the supports property which may be false, or $default on failure. + +## `acf_field_type_exists()` + +* @deprecated +@see acf_is_field_type() +* @type function +* @date 1/10/13 +* @since ACF 5.0.0 +* @param $type (string) +* @return (boolean) + +## `acf_get_field_categories_i18n()` + +Returns an array of localised field categories. + +* @since ACF 6.1 +* @return array + +## `acf_get_grouped_field_types()` + +Returns an multi-dimentional array of field types "name => label" grouped by category + +* @since ACF 5.0.0 +* @return array + +## `acf_get_combined_field_type_settings_tabs()` + +Returns an array of tabs for a field type. +We combine a list of default tabs with filtered tabs. +I.E. Default tabs should be static and should not be changed by the +filtered tabs. + +* @since ACF 6.1 +* @return array Key/value array of the default settings tabs for field type settings. + +## `acf_get_pro_field_types()` + +Get the PRO only fields and their core metadata. + +* @since ACF 6.1 +* @return array An array of all the pro field types and their field type selection required meta data. + +--- diff --git a/docs/code-reference/fields/class-acf-repeater-table-file.md b/docs/code-reference/fields/class-acf-repeater-table-file.md new file mode 100644 index 00000000..98249572 --- /dev/null +++ b/docs/code-reference/fields/class-acf-repeater-table-file.md @@ -0,0 +1,127 @@ +# ACF_Repeater_Table + +ACF_Repeater_Table + +* Helper class for rendering repeater tables. + +## Properties + +### `$field` + +The main field array used to render the repeater. + +* @var array + +### `$sub_fields` + +An array containing the subfields used in the repeater. + +* @var array + +### `$value` + +The value(s) of the repeater field. + +* @var array + +### `$show_add` + +If we should show the "Add Row" button. + +* @var boolean + +### `$show_remove` + +If we should show the "Remove Row" button. + +* @var boolean + +### `$show_order` + +If we should show the order of the fields. + +* @var boolean + +## Methods + +### `__construct` + +Constructs the ACF_Repeater_Table class. + +* @param array $field The main field array for the repeater being rendered. + +### `setup` + +Sets up the field for rendering. + +* @since ACF 6.0.0 +* @return void + +### `prepare_value` + +Prepares the repeater values for rendering. + +* @since ACF 6.0.0 +* @return array + +### `render` + +Renders the full repeater table. + +* @since ACF 6.0.0 +* @return void + +### `thead` + +Renders the table head. + +* @since ACF 6.0.0 +* @return void + +### `rows` + +Renders or returns rows for the repeater field table. + +* @since ACF 6.0.0 +* @param boolean $should_return If we should return the rows or render them. +* @return array|void + +### `row` + +Renders an individual row. + +* @since ACF 6.0.0 +* @param integer $i The row number. +* @param array $row An array containing the row values. +* @param boolean $should_return If we should return the row or render it. +* @return string|void + +### `row_handle` + +Renders the row handle at the start of each row. + +* @since ACF 6.0.0 +* @param integer $i The current row number. +* @return void + +### `row_actions` + +Renders the actions displayed at the end of each row. + +* @since ACF 6.0.0 +* @return void + +### `table_actions` + +Renders the actions displayed underneath the table. + +* @since ACF 6.0.0 +* @return void + +### `pagination` + +Renders the table pagination. +Mostly lifted from the WordPress core WP_List_Table class. + +* @since ACF 6.0.0 +* @return void diff --git a/docs/code-reference/fields/index.md b/docs/code-reference/fields/index.md new file mode 100644 index 00000000..b17c4629 --- /dev/null +++ b/docs/code-reference/fields/index.md @@ -0,0 +1,5 @@ +# Fields + +## Files + +- [Class Acf Repeater Table File](class-acf-repeater-table-file) diff --git a/docs/code-reference/forms/form-front-file.md b/docs/code-reference/forms/form-front-file.md new file mode 100644 index 00000000..5dbaa83c --- /dev/null +++ b/docs/code-reference/forms/form-front-file.md @@ -0,0 +1,14 @@ +# Global Functions + +## `acf_form_head()` + +Functions + +* alias of acf()->form->functions +* @type function +* @date 11/06/2014 +* @since ACF 5.0.0 +* @param n/a +* @return n/a + +--- diff --git a/docs/code-reference/forms/index.md b/docs/code-reference/forms/index.md new file mode 100644 index 00000000..f2d309d1 --- /dev/null +++ b/docs/code-reference/forms/index.md @@ -0,0 +1,5 @@ +# Forms + +## Files + +- [Form Front File](form-front-file) diff --git a/docs/code-reference/hooks/index.md b/docs/code-reference/hooks/index.md new file mode 100644 index 00000000..fc6cd0ff --- /dev/null +++ b/docs/code-reference/hooks/index.md @@ -0,0 +1,6 @@ +# Hooks + +## Files + +- [Action](action) +- [Filter](filter) diff --git a/docs/code-reference/index.md b/docs/code-reference/index.md new file mode 100644 index 00000000..c47de007 --- /dev/null +++ b/docs/code-reference/index.md @@ -0,0 +1,35 @@ +# Code Reference + +## Files + +- [Acf Bidirectional Functions File](acf-bidirectional-functions-file) +- [Acf Field Functions File](acf-field-functions-file) +- [Acf Field Group Functions File](acf-field-group-functions-file) +- [Acf Form Functions File](acf-form-functions-file) +- [Acf Helper Functions File](acf-helper-functions-file) +- [Acf Hook Functions File](acf-hook-functions-file) +- [Acf Input Functions File](acf-input-functions-file) +- [Acf Internal Post Type Functions File](acf-internal-post-type-functions-file) +- [Acf Meta Functions File](acf-meta-functions-file) +- [Acf Post Functions File](acf-post-functions-file) +- [Acf Post Type Functions File](acf-post-type-functions-file) +- [Acf Taxonomy Functions File](acf-taxonomy-functions-file) +- [Acf User Functions File](acf-user-functions-file) +- [Acf Utility Functions File](acf-utility-functions-file) +- [Acf Value Functions File](acf-value-functions-file) +- [Acf Wp Functions File](acf-wp-functions-file) +- [Assets File](assets-file) +- [Blocks File](blocks-file) +- [Compatibility File](compatibility-file) +- [Deprecated File](deprecated-file) +- [Fields File](fields-file) +- [L10n File](l10n-file) +- [Local Fields File](local-fields-file) +- [Local Json File](local-json-file) +- [Local Meta File](local-meta-file) +- [Locations File](locations-file) +- [Loop File](loop-file) +- [Revisions File](revisions-file) +- [Scf Ui Options Page Functions File](scf-ui-options-page-functions-file) +- [Upgrades File](upgrades-file) +- [Validation File](validation-file) diff --git a/docs/code-reference/l10n-file.md b/docs/code-reference/l10n-file.md new file mode 100644 index 00000000..ddc08fb6 --- /dev/null +++ b/docs/code-reference/l10n-file.md @@ -0,0 +1,31 @@ +# Global Functions + +## `acf_get_locale()` + +Returns the current locale. + +* @date 16/12/16 +* @since ACF 5.5.0 +* @return string + +## `acf_load_textdomain()` + +acf_load_textdomain + +* Loads the plugin's translated strings similar to load_plugin_textdomain(). +* @date 8/1/19 +* @since ACF 5.7.10 +* @param string $locale The plugin's current locale. +* @return void + +## `_acf_apply_language_cache_key()` + +_acf_apply_language_cache_key + +* Applies the current language to the cache key. +* @date 23/1/19 +* @since ACF 5.7.11 +* @param string $key The cache key. +* @return string + +--- diff --git a/docs/code-reference/local-fields-file.md b/docs/code-reference/local-fields-file.md new file mode 100644 index 00000000..47a27ff2 --- /dev/null +++ b/docs/code-reference/local-fields-file.md @@ -0,0 +1,352 @@ +# Global Functions + +## `acf_enable_local()` + +acf_enable_local + +* Enables the local filter. +* @date 22/1/19 +* @since ACF 5.7.10 +* @return void + +## `acf_disable_local()` + +acf_disable_local + +* Disables the local filter. +* @date 22/1/19 +* @since ACF 5.7.10 +* @return void + +## `acf_is_local_enabled()` + +acf_is_local_enabled + +* Returns true if local fields are enabled. +* @date 23/1/19 +* @since ACF 5.7.10 +* @return boolean + +## `acf_get_local_store()` + +Returns either local store or a dummy store for the given name or post type. + +* @date 23/1/19 +* @since ACF 5.7.10 +* @param string $name The store name. +* @param string $post_type The post type for the desired store. +* @return ACF_Data + +## `acf_reset_local()` + +acf_reset_local + +* Resets the local data. +* @date 22/1/19 +* @since ACF 5.7.10 +* @return void + +## `acf_get_local_field_groups()` + +acf_get_local_field_groups + +* Returns all local field groups. +* @date 22/1/19 +* @since ACF 5.7.10 +* @return array + +## `acf_get_local_internal_posts()` + +Returns local ACF posts with the provided post type. + +* @since ACF 6.1 +* @param string $post_type The post type to check for. +* @return array|mixed + +## `acf_have_local_field_groups()` + +acf_have_local_field_groups + +* description +* @date 22/1/19 +* @since ACF 5.7.10 +* @param type $var Description. Default. +* @return type Description. + +## `acf_count_local_field_groups()` + +acf_count_local_field_groups + +* description +* @date 22/1/19 +* @since ACF 5.7.10 +* @param type $var Description. Default. +* @return type Description. + +## `acf_add_local_field_group()` + +acf_add_local_field_group + +* Adds a local field group. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param array $field_group The field group array. +* @return boolean + +## `acf_add_local_internal_post_type()` + +Adds a local ACF internal post type. + +* @since ACF 6.1 +* @param array $post The main ACF post array. +* @param string $post_type The post type being added. +* @return boolean + +## `register_field_group()` + +register_field_group + +* See acf_add_local_field_group(). +* @date 22/1/19 +* @since ACF 5.7.10 +* @param array $field_group The field group array. +* @return void + +## `acf_remove_local_field_group()` + +acf_remove_local_field_group + +* Removes a field group for the given key. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field group key. +* @return boolean + +## `acf_remove_local_internal_post_type()` + +Removes a local ACF post with the given key and post type. + +* @since ACF 6.1 +* @param string $key The ACF key. +* @param string $post_type The ACF post type. +* @return boolean + +## `acf_is_local_field_group()` + +acf_is_local_field_group + +* Returns true if a field group exists for the given key. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field group key. +* @return boolean + +## `acf_is_local_internal_post_type()` + +Returns true if an ACF post exists for the given key. + +* @since ACF 6.1 +* @param string $key The ACF key. +* @param string $post_type The ACF post type. +* @return boolean + +## `acf_is_local_field_group_key()` + +acf_is_local_field_group_key + +* Returns true if a field group exists for the given key. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field group key. +* @return boolean + +## `acf_is_local_internal_post_type_key()` + +Returns true if a local ACF post exists for the given key. + +* @since ACF 6.1 +* @param string $key The ACF post key. +* @param string $post_type The post type to check. +* @return boolean + +## `acf_get_local_field_group()` + +acf_get_local_field_group + +* Returns a field group for the given key. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field group key. +* @return (array|null) + +## `acf_get_local_internal_post_type()` + +Returns an ACF post for the given key. + +* @since ACF 6.1 +* @param string $key The field group key. +* @param string $post_type The ACF post type. +* @return array|null + +## `acf_add_local_fields()` + +acf_add_local_fields + +* Adds an array of local fields. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param array $fields An array of un prepared fields. +* @return array + +## `acf_get_local_fields()` + +acf_get_local_fields + +* Returns all local fields for the given parent. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $parent The parent key. +* @return array + +## `acf_have_local_fields()` + +acf_have_local_fields + +* Returns true if local fields exist. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $parent The parent key. +* @return boolean + +## `acf_count_local_fields()` + +acf_count_local_fields + +* Returns the number of local fields for the given parent. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $parent The parent key. +* @return integer + +## `acf_add_local_field()` + +acf_add_local_field + +* Adds a local field. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param array $field The field array. +* @param boolean $prepared Whether or not the field has already been prepared for import. +* @return void + +## `_acf_generate_local_key()` + +_acf_generate_local_key + +* Generates a unique key based on the field's parent. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field key. +* @return boolean + +## `acf_remove_local_field()` + +acf_remove_local_field + +* Removes a field for the given key. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field key. +* @return boolean + +## `acf_is_local_field()` + +acf_is_local_field + +* Returns true if a field exists for the given key or name. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field group key. +* @return boolean + +## `acf_is_local_field_key()` + +acf_is_local_field_key + +* Returns true if a field exists for the given key. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field group key. +* @return boolean + +## `acf_get_local_field()` + +acf_get_local_field + +* Returns a field for the given key. +* @date 22/1/19 +* @since ACF 5.7.10 +* @param string $key The field group key. +* @return (array|null) + +## `_acf_apply_get_local_field_groups()` + +_acf_apply_get_local_field_groups + +* Appends local field groups to the provided array. +* @date 23/1/19 +* @since ACF 5.7.10 +* @param array $field_groups An array of field groups. +* @return array + +## `_acf_apply_get_local_internal_posts()` + +Appends local ACF internal post types to the provided array. + +* @since ACF 6.1 +* @param array $posts An array of ACF posts. +* @param string $post_type The ACF internal post type being loaded. +* @return array + +## `_acf_apply_is_local_field_key()` + +_acf_apply_is_local_field_key + +* Returns true if is a local key. +* @date 23/1/19 +* @since ACF 5.7.10 +* @param boolean $bool The result. +* @param string $id The identifier. +* @return boolean + +## `_acf_apply_is_local_field_group_key()` + +_acf_apply_is_local_field_group_key + +* Returns true if is a local key. +* @date 23/1/19 +* @since ACF 5.7.10 +* @param boolean $bool The result. +* @param string $id The identifier. +* @return boolean + +## `_acf_apply_is_local_internal_post_type_key()` + +Returns true if is a local key. + +* @since ACF 6.1 +* @param boolean $bool The result. +* @param string $id The identifier. +* @param string $post_type The post type. +* @return boolean + +## `_acf_do_prepare_local_fields()` + +_acf_do_prepare_local_fields + +* Local fields that are added too early will not be correctly prepared by the field type class. +* @date 23/1/19 +* @since ACF 5.7.10 +* @return void + +--- diff --git a/docs/code-reference/local-json-file.md b/docs/code-reference/local-json-file.md new file mode 100644 index 00000000..de95f4c9 --- /dev/null +++ b/docs/code-reference/local-json-file.md @@ -0,0 +1,30 @@ +# Global Functions + +## `acf_get_local_json_files()` + +Returns an array of found JSON field group files. + +* @date 14/4/20 +* @since ACF 5.9.0 +* @param string $post_type The ACF post type to get files for. +* @return array + +## `acf_write_json_field_group()` + +Saves a field group JSON file. + +* @date 5/12/2014 +* @since ACF 5.1.5 +* @param array $field_group The field group. +* @return boolean + +## `acf_delete_json_field_group()` + +Deletes a field group JSON file. + +* @date 5/12/2014 +* @since ACF 5.1.5 +* @param string $key The field group key. +* @return boolean True on success. + +--- diff --git a/docs/code-reference/local-meta-file.md b/docs/code-reference/local-meta-file.md new file mode 100644 index 00000000..e18b21a4 --- /dev/null +++ b/docs/code-reference/local-meta-file.md @@ -0,0 +1,23 @@ +# Global Functions + +## `acf_setup_meta()` + +acf_setup_meta + +* Adds postmeta to storage. +* @date 8/10/18 +* @since ACF 5.8.0 +@see ACF_Local_Meta::add() for list of parameters. +* @return array + +## `acf_reset_meta()` + +acf_reset_meta + +* Removes postmeta to storage. +* @date 8/10/18 +* @since ACF 5.8.0 +@see ACF_Local_Meta::remove() for list of parameters. +* @return void + +--- diff --git a/docs/code-reference/locations-file.md b/docs/code-reference/locations-file.md new file mode 100644 index 00000000..ae5d3fbd --- /dev/null +++ b/docs/code-reference/locations-file.md @@ -0,0 +1,112 @@ +# Global Functions + +## `acf_register_location_type()` + +Registers a location type. + +* @date 8/4/20 +* @since ACF 5.9.0 +* @param string $class_name The location class name. +* @return (ACF_Location|false) + +## `acf_get_location_types()` + +Returns an array of all registered location types. + +* @date 8/4/20 +* @since ACF 5.9.0 +* @return array + +## `acf_get_location_type()` + +Returns a location type for the given name. + +* @date 18/2/19 +* @since ACF 5.7.12 +* @param string $name The location type name. +* @return (ACF_Location|null) + +## `acf_get_location_rule_types()` + +Returns a grouped array of all location rule types. + +* @date 8/4/20 +* @since ACF 5.9.0 +* @return array + +## `acf_validate_location_rule()` + +Returns a validated location rule with all props. + +* @date 8/4/20 +* @since ACF 5.9.0 +* @param array $rule The location rule. +* @return array + +## `acf_get_location_rule_operators()` + +Returns an array of operators for a given rule. + +* @date 30/5/17 +* @since ACF 5.6.0 +* @param array $rule The location rule. +* @return array + +## `acf_get_location_rule_values()` + +Returns an array of values for a given rule. + +* @date 30/5/17 +* @since ACF 5.6.0 +* @param array $rule The location rule. +* @return array + +## `acf_match_location_rule()` + +Returns true if the provided rule matches the screen args. + +* @date 30/5/17 +* @since ACF 5.6.0 +* @param array $rule The location rule. +* @param array $screen The screen args. +* @param array $field The field group array. +* @return boolean + +## `acf_get_location_screen()` + +Returns ann array of screen args to be used against matching rules. + +* @date 8/4/20 +* @since ACF 5.9.0 +* @param array $screen The screen args. +* @param array $deprecated The field group array. +* @return array + +## `acf_register_location_rule()` + +Alias of acf_register_location_type(). + +* @date 31/5/17 +* @since ACF 5.6.0 +* @param string $class_name The location class name. +* @return (ACF_Location|false) + +## `acf_get_location_rule()` + +Alias of acf_get_location_type(). + +* @date 31/5/17 +* @since ACF 5.6.0 +* @param string $class_name The location class name. +* @return (ACF_Location|false) + +## `acf_get_valid_location_rule()` + +Alias of acf_validate_location_rule(). + +* @date 30/5/17 +* @since ACF 5.6.0 +* @param array $rule The location rule. +* @return array + +--- diff --git a/docs/code-reference/loop-file.md b/docs/code-reference/loop-file.md new file mode 100644 index 00000000..c11880c9 --- /dev/null +++ b/docs/code-reference/loop-file.md @@ -0,0 +1,43 @@ +# Global Functions + +## `acf_add_loop()` + +alias of acf()->loop->add_loop() + +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @param n/a +* @return n/a + +## `acf_update_loop()` + +alias of acf()->loop->update_loop() + +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @param n/a +* @return n/a + +## `acf_get_loop()` + +alias of acf()->loop->get_loop() + +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @param n/a +* @return n/a + +## `acf_remove_loop()` + +alias of acf()->loop->remove_loop() + +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @param n/a +* @return n/a + +--- diff --git a/docs/code-reference/rest-api/acf-rest-api-functions-file.md b/docs/code-reference/rest-api/acf-rest-api-functions-file.md new file mode 100644 index 00000000..5a5fc404 --- /dev/null +++ b/docs/code-reference/rest-api/acf-rest-api-functions-file.md @@ -0,0 +1,32 @@ +# Global Functions + +## `acf_get_field_rest_schema()` + +Get the REST API schema for a given field. + +* @param array $field +* @return array + +## `acf_get_field_rest_links()` + +Get the REST API field links for a given field. The links are appended to the REST response under the _links property +and provide API resource links to related objects. If a link is marked as 'embeddable', WordPress can load the resource +in the main request under the_embedded property when the request contains the _embed URL parameter. + +* @see \acf_field::get_rest_links() +@see <https://developer.wordpress.org/rest-api/using-the-rest-api/linking-and-embedding/> +* @param string|integer $post_id +* @param array $field +* @return array + +## `acf_format_value_for_rest()` + +Format a given field's value for output in the REST API. + +* @param $value +* @param $post_id +* @param $field +* @param string $format 'light' for normal REST API formatting or 'standard' to apply ACF's normal field formatting. +* @return mixed + +--- diff --git a/docs/code-reference/rest-api/class-acf-rest-api-file.md b/docs/code-reference/rest-api/class-acf-rest-api-file.md new file mode 100644 index 00000000..178ecbfb --- /dev/null +++ b/docs/code-reference/rest-api/class-acf-rest-api-file.md @@ -0,0 +1,103 @@ +# ACF_Rest_Api + +## Properties + +### `$request` + +* @var ACF_Rest_Request + +### `$embed_links` + +* @var ACF_Rest_Embed_Links + +## Methods + +### `register_field` + +Register our custom property as a REST field. + +### `get_schema` + +Dynamically generate the schema for the current request. + +* @return array + +### `validate_rest_arg` + +Validate the request args. Mostly a wrapper for `rest_validate_request_arg()`, but also +fires off a filter, so we can add some custom validation for specific fields. + +* This will likely no longer be needed once WordPress implements something like `validate_callback` +and `sanitize_callback` for nested schema properties, see: +<https://core.trac.wordpress.org/ticket/49960> +* @param mixed $value +* @param \WP_REST_Request $request +* @param string $param +* @return boolean|WP_Error + +### `load_fields` + +Load field values into the requested object. This method is not a part of any public API and is only public as +it is required by WordPress. + +* @param array $object An array representation of the post, term, or user object. +* @param string $field_name +* @param WP_REST_Request $request +* @param string $object_sub_type Note that this isn't the same as $this->object_type. This variable is +more specific and can be a post type or taxonomy. +* @return array + +### `update_fields` + +Update any incoming field values for the given object. This method is not a part of any public API and is only +public as it is required by WordPress. + +* @param array $data +* @param WP_Post|WP_Term|WP_User $object +* @param string $property 'acf' +* @param WP_REST_Request $request +* @param string $object_sub_type This will be the post type, the taxonomy, or 'user'. +* @return boolean|WP_Error + +### `make_identifier` + +Make the ACF identifier string for the given object. + +* @param integer $object_id +* @param string $object_type 'user', 'term', or 'post' +* @return string + +### `object_type_has_field_group` + +Gets an array of the location types that a field group is configured to use. + +* @param string $object_type 'user', 'term', or 'post' +* @param array $field_group The field group to check. +* @param array $location_types An array of location types. +* @return boolean + +### `get_field_groups_by_object_type` + +Get all field groups for the provided object type. + +* @param string $object_type 'user', 'term', or 'post' +* @return array An array of field groups that display for that location type. + +### `get_field_groups_by_id` + +Get all field groups for a given object. + +* @param integer $object_id +* @param string $object_type 'user', 'term', or 'post' +* @param string|null $object_sub_type The post type or taxonomy. When an $object_type of 'user' is in play, this can be ignored. +* @param array $scope Field group keys to limit the returned set of field groups to. This is used to scope field lookups to specific groups. +* @return array An array of matching field groups. + +### `get_fields` + +Get all ACF fields for a given field group and allow third party filtering. + +* @param array $field_group This could technically be other possible values supported by acf_get_fields() but in this +context, we're only using the field group arrays. +* @param null|integer $object_id The ID of the object being prepared. +* @return array diff --git a/docs/code-reference/rest-api/class-acf-rest-embed-links-file.md b/docs/code-reference/rest-api/class-acf-rest-embed-links-file.md new file mode 100644 index 00000000..5a83701d --- /dev/null +++ b/docs/code-reference/rest-api/class-acf-rest-embed-links-file.md @@ -0,0 +1,33 @@ +# ACF_Rest_Embed_Links + +Class ACF_Rest_Embed_Links + +* Manage the addition of embed links on supported REST endpoints. + +## Properties + +### `$links` + +* @var array Links to add to the response. These can be flagged as embeddable and expanded when _embed is passed with the request. + +## Methods + +### `hook_link_handlers` + +Hook into all REST-enabled post type, taxonomy, and the user controllers in order to prepare links. + +### `prepare_links` + +Add links to internal property for subsequent use in \ACF_Rest_Embed_Links::load_item_links(). + +* @param $post_id +* @param array $field + +### `load_item_links` + +Hook into the rest_prepare_{$type} filters and add links for the object being prepared. + +* @param WP_REST_Response $response +* @param WP_Post|WP_User|WP_Term $item +* @param WP_REST_Request $request +* @return WP_REST_Response diff --git a/docs/code-reference/rest-api/class-acf-rest-request-file.md b/docs/code-reference/rest-api/class-acf-rest-request-file.md new file mode 100644 index 00000000..0f1441cb --- /dev/null +++ b/docs/code-reference/rest-api/class-acf-rest-request-file.md @@ -0,0 +1,96 @@ +# ACF_Rest_Request + +Class ACF_Rest_Request + +## Properties + +### `$readonly_props` + +Define which private/protected class properties are allowed read access. Access to these is controlled in +\ACF_Rest_Request::__get(); + +* @var string[] + +### `$http_method` + +* @var string The HTTP request method for the current request. i.e; GET, POST, PATCH, PUT, DELETE, OPTIONS, HEAD + +### `$current_route` + +* @var string The current route being requested. + +### `$supported_routes` + +* @var array Route URL patterns we support. + +### `$url_params` + +* @var array Parameters matched from the URL. e.g; object IDs. + +### `$object_type` + +* @var string The underlying object type. e.g; post, term, user, etc. + +### `$object_sub_type` + +* @var string The requested object type. + +### `$child_object_type` + +* @var string The object type for a child object. e.g. post-revision, autosaves, etc. + +## Methods + +### `parse_request` + +Determine all required information from the current request. + +### `__get` + +Magic getter for accessing read-only properties. Should we ever need to enforce a getter method, we can do so here. + +* @param string $name The desired property name. +* @return string|null + +### `get_url_param` + +Get a URL parameter if found on the request URL. + +* @param $param +* @return mixed|null + +### `set_http_method` + +Determine the HTTP method of the current request. + +### `set_current_route` + +Get the current REST route as determined by WordPress. + +### `build_supported_routes` + +Build an array of route match patterns that we handle. These are the same as WordPress' core patterns except +we are also matching the object type here as well. + +### `set_url_params` + +Loop through supported routes to find matching pattern. Use matching pattern to determine any URL parameters. + +### `set_object_types` + +Determine the object type and sub type from the requested route. We need to know both the underlying WordPress +object type as well as post type or taxonomy in order to provide the right context when getting/updating fields. + +### `get_post_type_by_rest_base` + +Find the REST enabled post type object that matches the given REST base. + +* @param string $rest_base +* @return WP_Post_Type|null + +### `get_taxonomy_by_rest_base` + +Find the REST enabled taxonomy object that matches the given REST base. + +* @param $rest_base +* @return WP_Taxonomy|null diff --git a/docs/code-reference/rest-api/index.md b/docs/code-reference/rest-api/index.md new file mode 100644 index 00000000..0663077e --- /dev/null +++ b/docs/code-reference/rest-api/index.md @@ -0,0 +1,8 @@ +# Rest-api + +## Files + +- [Acf Rest Api Functions File](acf-rest-api-functions-file) +- [Class Acf Rest Api File](class-acf-rest-api-file) +- [Class Acf Rest Embed Links File](class-acf-rest-embed-links-file) +- [Class Acf Rest Request File](class-acf-rest-request-file) diff --git a/docs/code-reference/revisions-file.md b/docs/code-reference/revisions-file.md new file mode 100644 index 00000000..8012dce7 --- /dev/null +++ b/docs/code-reference/revisions-file.md @@ -0,0 +1,23 @@ +# Global Functions + +## `acf_save_post_revision()` + +This function will copy meta from a post to it's latest revision + +* @type function +* @date 26/09/2016 +* @since ACF 5.4.0 +* @param $post_id (int) +* @return n/a + +## `acf_get_post_latest_revision()` + +This function will return the latest revision for a given post + +* @type function +* @date 25/06/2016 +* @since ACF 5.3.8 +* @param $post_id (int) +* @return $post_id (int) + +--- diff --git a/docs/code-reference/scf-ui-options-page-functions-file.md b/docs/code-reference/scf-ui-options-page-functions-file.md new file mode 100644 index 00000000..7c2f79d0 --- /dev/null +++ b/docs/code-reference/scf-ui-options-page-functions-file.md @@ -0,0 +1,181 @@ +# Global Functions + +## `acf_get_ui_options_page()` + +Get an SCF UI options page as an array + +* @since ACF 6.2 +* @param integer|string $id The post ID being queried. +* @return array|false The UI options page array. + +## `acf_get_raw_ui_options_page()` + +Retrieves a raw SCF UI options page. + +* @since ACF 6.2 +* @param integer|string $id The post ID. +* @return array|false The UI options page array. + +## `acf_get_ui_options_page_post()` + +Gets a post object for an SCF UI options page. + +* @since ACF 6.2 +* @param integer|string $id The post ID, key, or name. +* @return object|boolean The post object, or false on failure. + +## `acf_is_ui_options_page_key()` + +Returns true if the given identifier is an SCF UI options page key. + +* @since ACF 6.2 +* @param string $id The identifier. +* @return boolean + +## `acf_validate_ui_options_page()` + +Validates an SCF UI options page. + +* @since ACF 6.2 +* @param array $ui_options_page The SCF UI options page array to validate. +* @return array|boolean + +## `acf_translate_ui_options_page()` + +Translates the settings for an SCF UI options page. + +* @since ACF 6.2 +* @param array $ui_options_page The SCF UI options page array. +* @return array + +## `acf_get_ui_options_pages()` + +Returns and array of SCF UI options pages for the given $filter. + +* @since ACF 6.2 +* @param array $filter An array of args to filter results by. +* @return array + +## `acf_get_raw_ui_options_pages()` + +Returns an array of raw SCF UI options pages. + +* @since ACF 6.2 +* @return array + +## `acf_filter_ui_options_pages()` + +Returns a filtered array of SCF UI options pages based on the given $args. + +* @since ACF 6.2 +* @param array $ui_options_pages An array of SCF UI options pages. +* @param array $args An array of args to filter by. +* @return array + +## `acf_update_ui_options_page()` + +Updates an SCF UI options page in the database. + +* @since ACF 6.2 +* @param array $ui_options_page The main ACF UI options page array. +* @return array + +## `acf_flush_ui_options_page_cache()` + +Deletes all caches for the provided ACF UI options page. + +* @since ACF 6.2 +* @param array $ui_options_page The SCF UI options page array. +* @return void + +## `acf_delete_ui_options_page()` + +Deletes an ACF UI options page from the database. + +* @since ACF 6.2 +* @param integer|string $id The ACF UI options page ID, key or name. +* @return boolean True if the options page was deleted. + +## `acf_trash_ui_options_page()` + +Trashes an ACF UI options page. + +* @since ACF 6.2 +* @param integer|string $id The UI options page ID, key, or name. +* @return boolean True if the options page was trashed. + +## `acf_untrash_ui_options_page()` + +Restores an ACF UI options page from the trash. + +* @since ACF 6.2 +* @param integer|string $id The UI options page ID, key, or name. +* @return boolean True if the options page was untrashed. + +## `acf_is_ui_options_page()` + +Returns true if the given params match an ACF UI options page. + +* @since ACF 6.2 +* @param array $ui_options_page The ACF UI options page array. +* @return boolean + +## `acf_duplicate_ui_options_page()` + +Duplicates an ACF UI options page. + +* @since ACF 6.2 +* @param integer|string $id The ACF UI options page ID, key or name. +* @param integer $new_post_id Optional ID to override. +* @return array|boolean The new ACF UI options page, or false on failure. + +## `acf_update_ui_options_page_active_status()` + +Activates or deactivates an ACF UI options page. + +* @since ACF 6.2 +* @param integer|string $id The ACF UI options page ID, key or name. +* @param boolean $activate True if the UI options page should be activated. +* @return boolean + +## `acf_get_ui_options_page_edit_link()` + +Checks if the current user can edit the UI options page and returns the edit URL. + +* @since ACF 6.2 +* @param integer $post_id The ACF UI options page ID. +* @return string + +## `acf_prepare_ui_options_page_for_export()` + +Returns a modified ACF UI options page ready for export. + +* @since ACF 6.2 +* @param array $ui_options_page The ACF UI options page array. +* @return array + +## `acf_export_ui_options_page_as_php()` + +Exports an ACF UI options page as PHP. + +* @since ACF 6.2 +* @param array $ui_options_page The ACF UI options page array. +* @return string|boolean + +## `acf_prepare_ui_options_page_for_import()` + +Prepares an ACF UI options page for the import process. + +* @since ACF 6.2 +* @param array $ui_options_page The ACF UI options page array. +* @return array + +## `acf_import_ui_options_page()` + +Imports an ACF UI options page into the database. + +* @since ACF 6.2 +* @param array $ui_options_page The ACF UI options page array. +* @return array The imported options page. + +--- diff --git a/docs/code-reference/upgrades-file.md b/docs/code-reference/upgrades-file.md new file mode 100644 index 00000000..32a15a1d --- /dev/null +++ b/docs/code-reference/upgrades-file.md @@ -0,0 +1,124 @@ +# Global Functions + +## `acf_has_upgrade()` + +acf_has_upgrade + +* Returns true if this site has an upgrade avaialble. +* @date 24/8/18 +* @since ACF 5.7.4 +* @return boolean + +## `acf_upgrade_all()` + +Runs upgrade routines if this site has an upgrade available. + +* @date 24/8/18 +* @since ACF 5.7.4 + +## `acf_get_db_version()` + +acf_get_db_version + +* Returns the ACF DB version. +* @date 10/09/2016 +* @since ACF 5.4.0 +* @return string + +## `acf_update_db_version()` + +Updates the ACF DB version. + +* @date 10/09/2016 +* @since ACF 5.4.0 +* @param string $version The new version. +* @return void + +## `acf_upgrade_500()` + +acf_upgrade_500 + +* Version 5 introduces new post types for field groups and fields. +* @date 23/8/18 +* @since ACF 5.7.4 +* @return void + +## `acf_upgrade_500_field_groups()` + +acf_upgrade_500_field_groups + +* Upgrades all ACF4 field groups to ACF5 +* @date 23/8/18 +* @since ACF 5.7.4 +* @return void + +## `acf_upgrade_500_field_group()` + +acf_upgrade_500_field_group + +* Upgrades a ACF4 field group to ACF5 +* @date 23/8/18 +* @since ACF 5.7.4 +* @param object $ofg The old field group post object. +* @return array $nfg The new field group array. + +## `acf_upgrade_500_fields()` + +acf_upgrade_500_fields + +* Upgrades all ACF4 fields to ACF5 from a specific field group +* @date 23/8/18 +* @since ACF 5.7.4 +* @param object $ofg The old field group post object. +* @param array $nfg The new field group array. +* @return void + +## `acf_upgrade_500_field()` + +acf_upgrade_500_field + +* Upgrades a ACF4 field to ACF5 +* @date 23/8/18 +* @since ACF 5.7.4 +* @param array $field The old field. +* @return array $field The new field. + +## `acf_upgrade_550()` + +acf_upgrade_550 + +* Version 5.5 adds support for the wp_termmeta table added in WP 4.4. +* @date 23/8/18 +* @since ACF 5.7.4 +* @return void + +## `acf_upgrade_550_termmeta()` + +acf_upgrade_550_termmeta + +* Upgrades all ACF4 termmeta saved in wp_options to the wp_termmeta table. +* @date 23/8/18 +* @since ACF 5.7.4 +* @return void + +## `acf_wp_upgrade_550_termmeta()` + +When the database is updated to support term meta, migrate ACF term meta data across. + +* @date 23/8/18 +* @since ACF 5.7.4 +* @param string $wp_db_version The new $wp_db_version. +* @param string $wp_current_db_version The old (current) $wp_db_version. +* @return void + +## `acf_upgrade_550_taxonomy()` + +acf_upgrade_550_taxonomy + +* Upgrades all ACF4 termmeta for a specific taxonomy. +* @date 24/8/18 +* @since ACF 5.7.4 +* @param string $taxonomy The taxonomy name. +* @return void + +--- diff --git a/docs/code-reference/validation-file.md b/docs/code-reference/validation-file.md new file mode 100644 index 00000000..f39fbfaf --- /dev/null +++ b/docs/code-reference/validation-file.md @@ -0,0 +1,80 @@ +# Global Functions + +## `acf_add_validation_error()` + +Add validation error. + +* Alias of acf()->validation->add_error() +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @param string $input name attribute of DOM elmenet. +* @param string $message error message. +* @return void + +## `acf_get_validation_errors()` + +Retrieve validation errors. + +* Alias of acf()->validation->function() +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @return array|bool + +## `acf_get_validation_error()` + +Get the validation error. + +* Alias of acf()->validation->get_error() +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @since 6.4.1 Added the $input parameter, which is required in the get_error method. +* @param string $input name attribute of DOM elmenet. +* @return string|bool + +## `acf_reset_validation_errors()` + +Reset Validation errors. + +* Alias of acf()->validation->reset_errors() +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @return void + +## `acf_validate_save_post()` + +This function will validate $_POST data and add errors + +* @type function +* @date 25/11/2013 +* @since ACF 5.0.0 +* @param bool $show_errors if true, errors will be shown via a wp_die screen. +* @return bool + +## `acf_validate_values()` + +This function will validate an array of field values + +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @param array $values An array of field values. +* @param string $input_prefix The input element's name attribute. +* @return void + +## `acf_validate_value()` + +This function will validate a field's value + +* @type function +* @date 6/10/13 +* @since ACF 5.0.0 +* @param mixed $value The field value to validate. +* @param array $field The field array. +* @param string $input The input element's name attribute. +* @return boolean + +--- diff --git a/docs/concepts/architecture.md b/docs/concepts/architecture.md index 814843fb..0b11f3dc 100644 --- a/docs/concepts/architecture.md +++ b/docs/concepts/architecture.md @@ -5,18 +5,21 @@ This document explains the internal architecture of Secure Custom Fields. ## Core Components ### 1. Field Management System + - Field type registration and validation - Field rendering and display - Data storage and retrieval - Value sanitization and escaping ### 2. Post Type Management + - Custom post type registration - Advanced configuration options - WordPress core integration - Rewrite rules and permalinks ### 3. Security Layer + - Input validation and sanitization - Context-aware output escaping - Permission and capability management @@ -62,21 +65,25 @@ The plugin is organized into several key directories: ## Loading Process ### 1. Plugin Initialization + - Load dependencies - Set up autoloader - Initialize core classes ### 2. WordPress Integration + - Register post types - Add hooks and filters - Set up admin menus ### 3. Feature Registration + - Register field types - Set up API endpoints - Initialize components ### 4. Admin Interface Setup + - Load admin scripts - Set up field management - Configure settings pages @@ -101,4 +108,4 @@ The plugin is organized into several key directories: 4. **Output** - Template functions - REST API responses - - Admin interface \ No newline at end of file + - Admin interface diff --git a/docs/concepts/index.md b/docs/concepts/index.md index bbd326f5..df1da62e 100644 --- a/docs/concepts/index.md +++ b/docs/concepts/index.md @@ -4,9 +4,9 @@ This section covers the fundamental concepts and architecture of Secure Custom F ## In This Section -- [Architecture](architecture.md) - Understanding SCF's internal structure -- [Security](security.md) - Security principles and best practices +- [Architecture](architecture) - Understanding SCF's internal structure +- [Security](security) - Security principles and best practices ## Overview -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. \ No newline at end of file +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. diff --git a/docs/concepts/security.md b/docs/concepts/security.md index eaeceb95..1d88056d 100644 --- a/docs/concepts/security.md +++ b/docs/concepts/security.md @@ -26,4 +26,4 @@ When working with SCF: 1. Always use provided escaping functions 2. Check user capabilities before operations 3. Validate all data before saving -4. Use nonces for form submissions \ No newline at end of file +4. Use nonces for form submissions diff --git a/docs/contributing/documentation.md b/docs/contributing/documentation.md index 456a95eb..2343eda3 100644 --- a/docs/contributing/documentation.md +++ b/docs/contributing/documentation.md @@ -36,4 +36,4 @@ We follow the [WordPress Documentation Style Guide](https://make.wordpress.org/d - API reference - Hook documentation - Integration guides - - Security practices \ No newline at end of file + - Security practices diff --git a/docs/contributing/index.md b/docs/contributing/index.md index e5997b3d..a7068e69 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -34,4 +34,4 @@ Guide for contributing to Secure Custom Fields development. - Follow WordPress coding standards - Write unit tests for new features - Document all changes -- Keep pull requests focused \ No newline at end of file +- Keep pull requests focused diff --git a/docs/features/field/META.md b/docs/features/field/META.md new file mode 100644 index 00000000..b59b43e5 --- /dev/null +++ b/docs/features/field/META.md @@ -0,0 +1,21 @@ +# Field Documentation Guide + +This directory contains documentation for all field types in Secure Custom Fields. + +## Structure + +Each field type has its own directory containing: + +- `index.md` - Main documentation for the field +- `tutorial.md` - Step-by-step tutorial for implementing the field + +## Adding New Field Documentation + +1. Create a new directory for the field type +2. Create both required files +3. Follow the standard format for each file type +4. Include code examples and use cases + +## Documentation Standards + +(To be added). diff --git a/docs/features/fields/accordion/index.md b/docs/features/field/accordion/index.md similarity index 99% rename from docs/features/fields/accordion/index.md rename to docs/features/field/accordion/index.md index 90b25dbd..2925c370 100644 --- a/docs/features/fields/accordion/index.md +++ b/docs/features/field/accordion/index.md @@ -3,12 +3,14 @@ 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. ## Key Features + - Creates collapsible sections for field organization - Can be set to open/closed by default - Supports multiple open sections simultaneously - Can act as an endpoint for previous accordion sections ## Settings + - Open - Display this accordion as open on page load - Multi-Expand - Allow this accordion to open without closing others -- Endpoint - Define an endpoint for the previous accordion to stop \ No newline at end of file +- Endpoint - Define an endpoint for the previous accordion to stop diff --git a/docs/features/fields/accordion/tutorial.md b/docs/features/field/accordion/tutorial.md similarity index 94% rename from docs/features/fields/accordion/tutorial.md rename to docs/features/field/accordion/tutorial.md index 8ef2985e..84ae5ce6 100644 --- a/docs/features/fields/accordion/tutorial.md +++ b/docs/features/field/accordion/tutorial.md @@ -1,6 +1,7 @@ # Using the Accordion Field ## Basic Setup + 1. Create a new Field Group 2. Add an Accordion field 3. Configure basic settings: @@ -9,6 +10,7 @@ - Decide if multiple sections can be open ## Common Use Cases + 1. Organizing Content Sections - Group related fields together - Use clear section names @@ -20,7 +22,8 @@ - Settings/Configuration ## Tips + - Keep section names concise but descriptive - Don't nest accordions too deeply - Consider using endpoints to create clear breaks -- Group related fields logically \ No newline at end of file +- Group related fields logically diff --git a/docs/features/fields/button-group/index.md b/docs/features/field/button-group/index.md similarity index 92% rename from docs/features/fields/button-group/index.md rename to docs/features/field/button-group/index.md index c626da24..ea4c38f9 100644 --- a/docs/features/fields/button-group/index.md +++ b/docs/features/field/button-group/index.md @@ -3,13 +3,15 @@ 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. ## Key Features + - Visual button-style interface - Single option selection - Customizable button labels - Clear visual indication of selected option ## Settings + - Choices - Define the available options - Default Value - Set the pre-selected option - Return Format - Specify how the value should be returned -- Allow Null - Option to have no selection \ No newline at end of file +- Allow Null - Option to have no selection diff --git a/docs/features/fields/button-group/tutorial.md b/docs/features/field/button-group/tutorial.md similarity index 94% rename from docs/features/fields/button-group/tutorial.md rename to docs/features/field/button-group/tutorial.md index 0e4ed945..5b0688c1 100644 --- a/docs/features/fields/button-group/tutorial.md +++ b/docs/features/field/button-group/tutorial.md @@ -1,6 +1,7 @@ # Using the Button Group Field ## Basic Setup + 1. Create a new Field Group 2. Add a Button Group field 3. Configure the choices: @@ -9,6 +10,7 @@ - Choose return format ## Common Use Cases + 1. Simple Toggle Options - Yes/No choices - Show/Hide settings @@ -20,7 +22,8 @@ - Priority levels ## Tips + - Keep choices concise - Use clear labels - Consider mobile usability -- Limit number of options \ No newline at end of file +- Limit number of options diff --git a/docs/features/fields/checkbox/index.md b/docs/features/field/checkbox/index.md similarity index 90% rename from docs/features/fields/checkbox/index.md rename to docs/features/field/checkbox/index.md index f7ddcd2c..62b6fe2a 100644 --- a/docs/features/fields/checkbox/index.md +++ b/docs/features/field/checkbox/index.md @@ -3,14 +3,16 @@ 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. ## Key Features + - Multiple option selection - Toggle individual choices - Customizable checkbox layout - Flexible return format ## Settings + - Choices - Define the available options - Default Value - Set pre-selected options - Layout - Choose between vertical or horizontal layout - Allow Custom - Enable user-added choices -- Toggle All - Option to select/deselect all choices \ No newline at end of file +- Toggle All - Option to select/deselect all choices diff --git a/docs/features/fields/checkbox/tutorial.md b/docs/features/field/checkbox/tutorial.md similarity index 93% rename from docs/features/fields/checkbox/tutorial.md rename to docs/features/field/checkbox/tutorial.md index 8cf9f7e8..6d512976 100644 --- a/docs/features/fields/checkbox/tutorial.md +++ b/docs/features/field/checkbox/tutorial.md @@ -1,6 +1,7 @@ # Using the Checkbox Field ## Basic Setup + 1. Create a new Field Group 2. Add a Checkbox field 3. Configure options: @@ -10,6 +11,7 @@ - Enable/disable "Select All" ## Common Use Cases + 1. Multiple Selection Lists - Categories/Tags - Feature toggles @@ -21,7 +23,8 @@ - Content filters ## Tips + - Group related options together - Consider using columns for many options - Provide clear labels -- Use "Select All" for long lists \ No newline at end of file +- Use "Select All" for long lists diff --git a/docs/features/fields/clone/index.md b/docs/features/field/clone/index.md similarity index 91% rename from docs/features/fields/clone/index.md rename to docs/features/field/clone/index.md index 84cf297b..74bb0c4a 100644 --- a/docs/features/fields/clone/index.md +++ b/docs/features/field/clone/index.md @@ -3,13 +3,15 @@ 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. ## Key Features + - Copy existing field configurations - Clone individual fields or entire field groups - Prefix labels to avoid naming conflicts - Maintain synchronized settings across cloned instances ## Settings + - Select Fields - Choose which fields or groups to clone - Display - Control how the cloned fields appear - Prefix Label - Add a prefix to cloned field labels -- Prefix Name - Add a prefix to cloned field names \ No newline at end of file +- Prefix Name - Add a prefix to cloned field names diff --git a/docs/features/fields/clone/tutorial.md b/docs/features/field/clone/tutorial.md similarity index 94% rename from docs/features/fields/clone/tutorial.md rename to docs/features/field/clone/tutorial.md index e92aa1a1..617eac21 100644 --- a/docs/features/fields/clone/tutorial.md +++ b/docs/features/field/clone/tutorial.md @@ -1,6 +1,7 @@ # Using the Clone Field ## Basic Setup + 1. Create a new Field Group 2. Add a Clone field 3. Configure clone settings: @@ -10,6 +11,7 @@ - Configure labels ## Common Use Cases + 1. Reusable Field Sets - Contact information - Social media links @@ -21,7 +23,8 @@ - Standard form elements ## Tips + - Use meaningful prefixes - Consider data structure - Keep cloned groups focused -- Document clone relationships \ No newline at end of file +- Document clone relationships diff --git a/docs/features/fields/color-picker/index.md b/docs/features/field/color-picker/index.md similarity index 90% rename from docs/features/fields/color-picker/index.md rename to docs/features/field/color-picker/index.md index 7e3b82ba..924fa4c1 100644 --- a/docs/features/fields/color-picker/index.md +++ b/docs/features/field/color-picker/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Visual color selection interface - RGB and RGBA color support - Opacity/transparency control @@ -10,6 +11,7 @@ The Color Picker field provides an interactive interface for selecting colors. I - Hex color input ## Settings + - Default Value - Set a default color - Return Format - Choose between string, array, or rgba format -- Enable Opacity - Allow transparency selection \ No newline at end of file +- Enable Opacity - Allow transparency selection diff --git a/docs/features/fields/color-picker/tutorial.md b/docs/features/field/color-picker/tutorial.md similarity index 94% rename from docs/features/fields/color-picker/tutorial.md rename to docs/features/field/color-picker/tutorial.md index 2d9bd801..ce2b867c 100644 --- a/docs/features/fields/color-picker/tutorial.md +++ b/docs/features/field/color-picker/tutorial.md @@ -1,6 +1,7 @@ # Using the Color Picker Field ## Basic Setup + 1. Create a new Field Group 2. Add a Color Picker field 3. Configure options: @@ -10,6 +11,7 @@ - Set display preferences ## Common Use Cases + 1. Theme Customization - Brand colors - Background colors @@ -21,7 +23,8 @@ - Overlay settings ## Tips + - Consider color validation - Use default colors strategically - Document color usage -- Consider accessibility \ No newline at end of file +- Consider accessibility diff --git a/docs/features/fields/date-picker/index.md b/docs/features/field/date-picker/index.md similarity index 92% rename from docs/features/fields/date-picker/index.md rename to docs/features/field/date-picker/index.md index dc536298..92a48483 100644 --- a/docs/features/fields/date-picker/index.md +++ b/docs/features/field/date-picker/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Interactive calendar interface - Customizable date formats - Week starts on any day @@ -10,7 +11,8 @@ The Date Picker field provides a calendar interface for selecting dates. It offe - Multiple display formats ## Settings + - Display Format - How the date appears to editors - Return Format - How the date is stored/returned - Week Starts On - Set first day of week -- First Day - Configure week start day \ No newline at end of file +- First Day - Configure week start day diff --git a/docs/features/fields/date-picker/tutorial.md b/docs/features/field/date-picker/tutorial.md similarity index 94% rename from docs/features/fields/date-picker/tutorial.md rename to docs/features/field/date-picker/tutorial.md index f1cee8d2..ef54c4f5 100644 --- a/docs/features/fields/date-picker/tutorial.md +++ b/docs/features/field/date-picker/tutorial.md @@ -1,6 +1,7 @@ # Using the Date Picker Field ## Basic Setup + 1. Create a new Field Group 2. Add a Date Picker field 3. Configure options: @@ -10,6 +11,7 @@ - Set default value ## Common Use Cases + 1. Event Management - Event dates - Scheduling @@ -21,7 +23,8 @@ - Time-sensitive content ## Tips + - Use consistent date formats - Consider timezone implications - Set appropriate restrictions -- Use clear date formatting \ No newline at end of file +- Use clear date formatting diff --git a/docs/features/fields/date-time-picker/index.md b/docs/features/field/date-time-picker/index.md similarity index 92% rename from docs/features/fields/date-time-picker/index.md rename to docs/features/field/date-time-picker/index.md index d0d80cc6..e0342936 100644 --- a/docs/features/fields/date-time-picker/index.md +++ b/docs/features/field/date-time-picker/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Combined date and time selection - Customizable date/time formats - Time increment control @@ -10,7 +11,8 @@ The Date Time Picker field combines date and time selection into a single interf - Timezone support ## Settings + - Display Format - How the datetime appears to editors - Return Format - How the datetime is stored/returned - Week Starts On - Set first day of week -- Time Increment - Control minute stepping \ No newline at end of file +- Time Increment - Control minute stepping diff --git a/docs/features/fields/date-time-picker/tutorial.md b/docs/features/field/date-time-picker/tutorial.md similarity index 94% rename from docs/features/fields/date-time-picker/tutorial.md rename to docs/features/field/date-time-picker/tutorial.md index 4095baa9..1ffc7ff5 100644 --- a/docs/features/fields/date-time-picker/tutorial.md +++ b/docs/features/field/date-time-picker/tutorial.md @@ -1,6 +1,7 @@ # Using the Date Time Picker Field ## Basic Setup + 1. Create a new Field Group 2. Add a Date Time Picker field 3. Configure options: @@ -10,6 +11,7 @@ - Configure default value ## Common Use Cases + 1. Event Scheduling - Event start/end times - Appointment booking @@ -21,7 +23,8 @@ - Automated tasks ## Tips + - Consider time zone handling - Use appropriate time increments - Validate date ranges -- Clear datetime formatting \ No newline at end of file +- Clear datetime formatting diff --git a/docs/features/fields/email/index.md b/docs/features/field/email/index.md similarity index 92% rename from docs/features/fields/email/index.md rename to docs/features/field/email/index.md index 5cbb5640..e24206ab 100644 --- a/docs/features/fields/email/index.md +++ b/docs/features/field/email/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Email format validation - Custom placeholder text - Prepend/append text options @@ -10,7 +11,8 @@ The Email field provides a specialized input for email addresses. It includes bu - Multiple email support ## Settings + - Default Value - Set a default email address - Placeholder - Custom placeholder text - Prepend - Add text before the input -- Append - Add text after the input \ No newline at end of file +- Append - Add text after the input diff --git a/docs/features/fields/email/tutorial.md b/docs/features/field/email/tutorial.md similarity index 95% rename from docs/features/fields/email/tutorial.md rename to docs/features/field/email/tutorial.md index 221a5ba3..59441f09 100644 --- a/docs/features/fields/email/tutorial.md +++ b/docs/features/field/email/tutorial.md @@ -1,6 +1,7 @@ # Using the Email Field ## Basic Setup + 1. Create a new Field Group 2. Add an Email field 3. Configure options: @@ -10,6 +11,7 @@ - Set default value ## Common Use Cases + 1. Contact Information - Contact forms - User profiles @@ -21,7 +23,8 @@ - System notifications ## Tips + - Use clear validation messages - Consider multiple email support - Add helpful placeholder text -- Validate email format \ No newline at end of file +- Validate email format diff --git a/docs/features/fields/file/index.md b/docs/features/field/file/index.md similarity index 90% rename from docs/features/fields/file/index.md rename to docs/features/field/file/index.md index 553b0ab7..3c00ba3d 100644 --- a/docs/features/fields/file/index.md +++ b/docs/features/field/file/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Media library integration - File type restrictions - Size limitations @@ -10,8 +11,9 @@ The File field enables file uploads and management through the WordPress media l - Preview capabilities ## Settings + - Library - Restrict to uploaded or all files - Return Format - Array, URL, or ID - Preview Size - Thumbnail display size - Min/Max Size - File size restrictions -- Allowed File Types - Restrict accepted formats \ No newline at end of file +- Allowed File Types - Restrict accepted formats diff --git a/docs/features/fields/file/tutorial.md b/docs/features/field/file/tutorial.md similarity index 94% rename from docs/features/fields/file/tutorial.md rename to docs/features/field/file/tutorial.md index ca9e80c7..360de834 100644 --- a/docs/features/fields/file/tutorial.md +++ b/docs/features/field/file/tutorial.md @@ -1,6 +1,7 @@ # Using the File Field ## Basic Setup + 1. Create a new Field Group 2. Add a File field 3. Configure options: @@ -10,6 +11,7 @@ - Set return format ## Common Use Cases + 1. Document Management - PDF uploads - Document attachments @@ -21,7 +23,8 @@ - Resource linking ## Tips + - Restrict file types appropriately - Set reasonable size limits - Consider storage implications -- Use clear preview options \ No newline at end of file +- Use clear preview options diff --git a/docs/features/fields/flexible-content/index.md b/docs/features/field/flexible-content/index.md similarity index 91% rename from docs/features/fields/flexible-content/index.md rename to docs/features/field/flexible-content/index.md index 5d5780b2..14f32322 100644 --- a/docs/features/fields/flexible-content/index.md +++ b/docs/features/field/flexible-content/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Dynamic layout builder - Multiple layout types - Drag and drop ordering @@ -10,7 +11,8 @@ The Flexible Content field provides a flexible content builder interface. It all - Customizable templates ## Settings + - Layouts - Define available content block types - Button Label - Customize the "Add Row" text - Min/Max Layouts - Limit number of blocks -- Layout Settings - Configure each layout type \ No newline at end of file +- Layout Settings - Configure each layout type diff --git a/docs/features/fields/flexible-content/tutorial.md b/docs/features/field/flexible-content/tutorial.md similarity index 95% rename from docs/features/fields/flexible-content/tutorial.md rename to docs/features/field/flexible-content/tutorial.md index 103ad7be..c5a7a296 100644 --- a/docs/features/fields/flexible-content/tutorial.md +++ b/docs/features/field/flexible-content/tutorial.md @@ -1,6 +1,7 @@ # Using the Flexible Content Field ## Basic Setup + 1. Create a new Field Group 2. Add a Flexible Content field 3. Configure layouts: @@ -10,6 +11,7 @@ - Configure button labels ## Common Use Cases + 1. Page Building - Content sections - Landing pages @@ -21,7 +23,8 @@ - Feature blocks ## Tips + - Plan layouts carefully - Use clear layout labels - Consider nesting depth -- Optimize for editors \ No newline at end of file +- Optimize for editors diff --git a/docs/features/fields/gallery/index.md b/docs/features/field/gallery/index.md similarity index 92% rename from docs/features/fields/gallery/index.md rename to docs/features/field/gallery/index.md index 9cd2df65..66c2a1e4 100644 --- a/docs/features/fields/gallery/index.md +++ b/docs/features/field/gallery/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Multiple image upload - Drag and drop ordering - Image previews @@ -10,8 +11,9 @@ The Gallery field enables management of multiple images in a single field. It pr - Media library integration ## Settings + - Library - Restrict to uploaded or all images - Min/Max Selection - Limit number of images - Preview Size - Thumbnail display size - Insert - Prepend or append new images -- Return Format - Array, URL, or ID \ No newline at end of file +- Return Format - Array, URL, or ID diff --git a/docs/features/fields/gallery/tutorial.md b/docs/features/field/gallery/tutorial.md similarity index 95% rename from docs/features/fields/gallery/tutorial.md rename to docs/features/field/gallery/tutorial.md index 8b7f25a0..be7322ba 100644 --- a/docs/features/fields/gallery/tutorial.md +++ b/docs/features/field/gallery/tutorial.md @@ -1,6 +1,7 @@ # Using the Gallery Field ## Basic Setup + 1. Create a new Field Group 2. Add a Gallery field 3. Configure options: @@ -10,6 +11,7 @@ - Set insert position ## Common Use Cases + 1. Image Collections - Photo galleries - Product images @@ -21,7 +23,8 @@ - Media libraries ## Tips + - Set appropriate image limits - Consider thumbnail sizes - Enable easy reordering -- Optimize image sizes \ No newline at end of file +- Optimize image sizes diff --git a/docs/features/fields/google-map/index.md b/docs/features/field/google-map/index.md similarity index 92% rename from docs/features/fields/google-map/index.md rename to docs/features/field/google-map/index.md index 937df31f..c8224739 100644 --- a/docs/features/fields/google-map/index.md +++ b/docs/features/field/google-map/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Interactive map interface - Address search functionality - Latitude/longitude selection @@ -10,8 +11,9 @@ The Google Map field provides an interactive map interface for selecting and sto - Zoom level control ## Settings + - Center Latitude - Default map center point - Center Longitude - Default map center point - Zoom Level - Default map zoom - Height - Map display height -- Return Format - Location data format \ No newline at end of file +- Return Format - Location data format diff --git a/docs/features/fields/google-map/tutorial.md b/docs/features/field/google-map/tutorial.md similarity index 94% rename from docs/features/fields/google-map/tutorial.md rename to docs/features/field/google-map/tutorial.md index 9975b44e..ef40037e 100644 --- a/docs/features/fields/google-map/tutorial.md +++ b/docs/features/field/google-map/tutorial.md @@ -1,6 +1,7 @@ # Using the Google Map Field ## Basic Setup + 1. Create a new Field Group 2. Add a Google Map field 3. Configure options: @@ -10,6 +11,7 @@ - Choose display format ## Common Use Cases + 1. Location Information - Business locations - Event venues @@ -21,7 +23,8 @@ - Store locators ## Tips + - Configure API key properly - Set appropriate zoom levels - Consider mobile display -- Use clear location markers \ No newline at end of file +- Use clear location markers diff --git a/docs/features/fields/group/index.md b/docs/features/field/group/index.md similarity index 89% rename from docs/features/fields/group/index.md rename to docs/features/field/group/index.md index 711ba179..37006b54 100644 --- a/docs/features/fields/group/index.md +++ b/docs/features/field/group/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Group multiple fields together - Single data structure - Simplified data retrieval @@ -10,6 +11,7 @@ The Group field allows you to organize multiple fields together into a single da - Nested field support ## Settings + - Sub Fields - Add fields within the group - Layout - Stack or table display format -- Return Format - Group or individual field values \ No newline at end of file +- Return Format - Group or individual field values diff --git a/docs/features/fields/group/tutorial.md b/docs/features/field/group/tutorial.md similarity index 94% rename from docs/features/fields/group/tutorial.md rename to docs/features/field/group/tutorial.md index 7a64111b..5fff57ba 100644 --- a/docs/features/fields/group/tutorial.md +++ b/docs/features/field/group/tutorial.md @@ -1,6 +1,7 @@ # Using the Group Field ## Basic Setup + 1. Create a new Field Group 2. Add a Group field 3. Configure sub-fields: @@ -10,6 +11,7 @@ - Choose return format ## Common Use Cases + 1. Related Data Sets - Address information - Social media profiles @@ -21,7 +23,8 @@ - Feature sets ## Tips + - Keep groups focused - Use clear labeling - Consider data structure -- Plan field organization \ No newline at end of file +- Plan field organization diff --git a/docs/features/fields/icon-picker/index.md b/docs/features/field/icon-picker/index.md similarity index 91% rename from docs/features/fields/icon-picker/index.md rename to docs/features/field/icon-picker/index.md index 6a86c06a..5bdd987f 100644 --- a/docs/features/fields/icon-picker/index.md +++ b/docs/features/field/icon-picker/index.md @@ -3,6 +3,7 @@ The Icon Picker field provides an interface for selecting icons from various sources including Dashicons, custom icon sets, or the media library. ## Key Features + - Multiple icon source options - Dashicons integration - Media library support @@ -10,7 +11,8 @@ The Icon Picker field provides an interface for selecting icons from various sou - Visual icon preview ## Settings + - Icon Library - Choose available icon sources - Return Format - Icon class, URL, or array - Preview Size - Icon display size -- Allow Custom - Enable custom icon URLs \ No newline at end of file +- Allow Custom - Enable custom icon URLs diff --git a/docs/features/fields/icon-picker/tutorial.md b/docs/features/field/icon-picker/tutorial.md similarity index 95% rename from docs/features/fields/icon-picker/tutorial.md rename to docs/features/field/icon-picker/tutorial.md index 9c5b4480..f7a9a848 100644 --- a/docs/features/fields/icon-picker/tutorial.md +++ b/docs/features/field/icon-picker/tutorial.md @@ -1,6 +1,7 @@ # Using the Icon Picker Field ## Basic Setup + 1. Create a new Field Group 2. Add an Icon Picker field 3. Configure options: @@ -10,6 +11,7 @@ - Enable custom URLs ## Common Use Cases + 1. UI Elements - Menu icons - Feature indicators @@ -21,7 +23,8 @@ - Navigation elements ## Tips + - Maintain icon consistency - Consider icon sizing - Use clear previews -- Document icon usage \ No newline at end of file +- Document icon usage diff --git a/docs/features/fields/image/index.md b/docs/features/field/image/index.md similarity index 93% rename from docs/features/fields/image/index.md rename to docs/features/field/image/index.md index 7deadfd6..02349018 100644 --- a/docs/features/fields/image/index.md +++ b/docs/features/field/image/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Media library integration - Image preview - Size restrictions @@ -10,8 +11,9 @@ The Image field provides a dedicated interface for uploading and selecting image - Multiple return formats ## Settings + - Preview Size - Thumbnail display size - Library - Restrict to uploaded or all images - Min/Max Width/Height - Image dimension limits - File Size Restrictions - Control upload sizes -- Return Format - Array, URL, or ID \ No newline at end of file +- Return Format - Array, URL, or ID diff --git a/docs/features/fields/image/tutorial.md b/docs/features/field/image/tutorial.md similarity index 93% rename from docs/features/fields/image/tutorial.md rename to docs/features/field/image/tutorial.md index e9a24f99..93e50c12 100644 --- a/docs/features/fields/image/tutorial.md +++ b/docs/features/field/image/tutorial.md @@ -1,6 +1,7 @@ # Using the Image Field ## Basic Setup + 1. Create a new Field Group 2. Add an Image field 3. Configure options: @@ -10,6 +11,7 @@ - Set return format ## Common Use Cases + 1. Content Images - Featured images - Article photos @@ -21,7 +23,8 @@ - Banner images ## Tips + - Set appropriate size limits - Consider image dimensions - Use meaningful preview sizes -- Plan for responsive display \ No newline at end of file +- Plan for responsive display diff --git a/docs/features/field/index.md b/docs/features/field/index.md new file mode 100644 index 00000000..95a0d1dc --- /dev/null +++ b/docs/features/field/index.md @@ -0,0 +1,44 @@ +# Field Types + +Documentation for all available field types in Secure Custom Fields. + +Each field type has its own documentation and tutorial showing how to implement and use it effectively. + +## Available Fields + +- [Accordion](accordion) - Group fields into collapsible sections +- [Button Group](button-group) - Select one option from a group of buttons +- [Checkbox](checkbox) - Select one or more choices +- [Clone](clone) - Duplicate and reuse existing field configurations +- [Color Picker](color-picker) - Choose colors with a visual picker +- [Date Picker](date-picker) - Select dates from a calendar +- [Date/Time Picker](date-time-picker) - Select dates and times +- [Email](email) - Input and validate email addresses +- [File](file) - Upload and manage files +- [Flexible Content](flexible-content) - Create flexible content layouts +- [Gallery](gallery) - Manage collections of images +- [Google Map](google-map) - Add location data with Google Maps +- [Group](group) - Group fields together +- [Icon Picker](icon-picker) - Select from available icons +- [Image](image) - Upload and manage images +- [Link](link) - Create links with titles and targets +- [Message](message) - Display instructional text +- [Number](number) - Input numeric values +- [oEmbed](oembed) - Embed external content +- [Page Link](page-link) - Link to internal content +- [Password](password) - Securely input passwords +- [Post Object](post-object) - Relate to other posts +- [Radio](radio) - Select one choice from options +- [Range](range) - Select a numeric value with a slider +- [Repeater](repeater) - Create repeatable groups of fields +- [Select](select) - Choose from dropdown options +- [Separator](separator) - Add visual breaks between fields +- [Tab](tab) - Organize fields into tabbed sections +- [Taxonomy](taxonomy) - Select taxonomy terms +- [Text](text) - Single line text input +- [Textarea](textarea) - Multi-line text input +- [Time Picker](time-picker) - Select time values +- [True/False](true-false) - Toggle switch for yes/no choices +- [URL](url) - Input and validate web addresses +- [User](user) - Select WordPress users +- [WYSIWYG](wysiwyg) - Rich text editor diff --git a/docs/features/fields/link/index.md b/docs/features/field/link/index.md similarity index 89% rename from docs/features/fields/link/index.md rename to docs/features/field/link/index.md index 3be74b61..d25e13f0 100644 --- a/docs/features/fields/link/index.md +++ b/docs/features/field/link/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Internal/external link support - Link text customization - Target attribute control @@ -10,6 +11,7 @@ The Link field provides an interface for creating links with various properties. - WordPress link picker integration ## Settings + - Return Format - Array or URL - Default Value - Preset link data -- Display Format - How the link appears in admin \ No newline at end of file +- Display Format - How the link appears in admin diff --git a/docs/features/fields/link/tutorial.md b/docs/features/field/link/tutorial.md similarity index 94% rename from docs/features/fields/link/tutorial.md rename to docs/features/field/link/tutorial.md index 2f1d9162..0d6d8bca 100644 --- a/docs/features/fields/link/tutorial.md +++ b/docs/features/field/link/tutorial.md @@ -1,6 +1,7 @@ # Using the Link Field ## Basic Setup + 1. Create a new Field Group 2. Add a Link field 3. Configure options: @@ -10,6 +11,7 @@ - Enable/disable features ## Common Use Cases + 1. Navigation Elements - Menu links - Call-to-actions @@ -21,7 +23,8 @@ - Document links ## Tips + - Validate URLs properly - Consider link targets - Use clear link text -- Check for broken links \ No newline at end of file +- Check for broken links diff --git a/docs/features/fields/message/index.md b/docs/features/field/message/index.md similarity index 92% rename from docs/features/fields/message/index.md rename to docs/features/field/message/index.md index f8e6127b..b5f8435a 100644 --- a/docs/features/fields/message/index.md +++ b/docs/features/field/message/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Custom HTML support - No data storage - Formatting options @@ -10,7 +11,8 @@ The Message field displays instructional text or HTML content within the editing - Editor instructions ## Settings + - Message - The content to display - New Lines - Handle line breaks - Escape HTML - Display HTML as text -- Format - Text formatting options \ No newline at end of file +- Format - Text formatting options diff --git a/docs/features/fields/message/tutorial.md b/docs/features/field/message/tutorial.md similarity index 94% rename from docs/features/fields/message/tutorial.md rename to docs/features/field/message/tutorial.md index 303eabb1..1d6f4a28 100644 --- a/docs/features/fields/message/tutorial.md +++ b/docs/features/field/message/tutorial.md @@ -1,6 +1,7 @@ # Using the Message Field ## Basic Setup + 1. Create a new Field Group 2. Add a Message field 3. Configure options: @@ -10,6 +11,7 @@ - Choose display style ## Common Use Cases + 1. User Guidance - Field instructions - Section descriptions @@ -21,7 +23,8 @@ - Information blocks ## Tips + - Keep messages concise - Use clear formatting - Consider visibility -- Update content regularly \ No newline at end of file +- Update content regularly diff --git a/docs/features/fields/number/index.md b/docs/features/field/number/index.md similarity index 93% rename from docs/features/fields/number/index.md rename to docs/features/field/number/index.md index a6a2e371..d60b26f3 100644 --- a/docs/features/fields/number/index.md +++ b/docs/features/field/number/index.md @@ -3,6 +3,7 @@ The Number field provides an input specifically for numeric values. It includes validation and formatting options to ensure proper number handling. ## Key Features + - Numeric validation - Min/max restrictions - Step increment control @@ -10,10 +11,11 @@ The Number field provides an input specifically for numeric values. It includes - Prefix/suffix support ## Settings + - Default Value - Preset number - Placeholder - Input placeholder text - Prepend - Text before the input - Append - Text after the input - Min - Minimum allowed value - Max - Maximum allowed value -- Step - Number increment size \ No newline at end of file +- Step - Number increment size diff --git a/docs/features/fields/number/tutorial.md b/docs/features/field/number/tutorial.md similarity index 94% rename from docs/features/fields/number/tutorial.md rename to docs/features/field/number/tutorial.md index 452a1d67..f7413df8 100644 --- a/docs/features/fields/number/tutorial.md +++ b/docs/features/field/number/tutorial.md @@ -1,6 +1,7 @@ # Using the Number Field ## Basic Setup + 1. Create a new Field Group 2. Add a Number field 3. Configure options: @@ -10,6 +11,7 @@ - Set default value ## Common Use Cases + 1. Numeric Input - Quantities - Ratings @@ -21,7 +23,8 @@ - Numeric parameters ## Tips + - Set appropriate ranges - Use clear step intervals - Consider validation needs -- Add helpful placeholders \ No newline at end of file +- Add helpful placeholders diff --git a/docs/features/fields/oembed/index.md b/docs/features/field/oembed/index.md similarity index 91% rename from docs/features/fields/oembed/index.md rename to docs/features/field/oembed/index.md index ec7aa52e..980e0daa 100644 --- a/docs/features/fields/oembed/index.md +++ b/docs/features/field/oembed/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Support for multiple providers - Automatic embed handling - Preview capability @@ -10,6 +11,7 @@ The oEmbed field allows embedding external content from various providers like Y - WordPress oEmbed integration ## Settings + - Width - Maximum width of embedded content - Height - Maximum height of embedded content -- Preview Size - Display size in admin \ No newline at end of file +- Preview Size - Display size in admin diff --git a/docs/features/fields/oembed/tutorial.md b/docs/features/field/oembed/tutorial.md similarity index 94% rename from docs/features/fields/oembed/tutorial.md rename to docs/features/field/oembed/tutorial.md index be77debf..0ee49c46 100644 --- a/docs/features/fields/oembed/tutorial.md +++ b/docs/features/field/oembed/tutorial.md @@ -1,6 +1,7 @@ # Using the oEmbed Field ## Basic Setup + 1. Create a new Field Group 2. Add an oEmbed field 3. Configure options: @@ -10,6 +11,7 @@ - Choose providers ## Common Use Cases + 1. Media Integration - Video embeds - Social media posts @@ -21,7 +23,8 @@ - Spotify tracks ## Tips + - Check provider compatibility - Consider responsive sizing - Test embed previews -- Validate URLs properly \ No newline at end of file +- Validate URLs properly diff --git a/docs/features/fields/page-link/index.md b/docs/features/field/page-link/index.md similarity index 92% rename from docs/features/fields/page-link/index.md rename to docs/features/field/page-link/index.md index e6fdfcc5..32b7dc9e 100644 --- a/docs/features/fields/page-link/index.md +++ b/docs/features/field/page-link/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Internal content linking - Multiple post type support - Search functionality @@ -10,8 +11,9 @@ The Page Link field provides an interface for creating links to internal WordPre - Multiple selection option ## Settings + - Post Type - Select available content types - Taxonomy - Filter by taxonomy terms - Allow Archives - Enable archive URL selection - Multiple Values - Allow multiple selections -- Allow Null - Make selection optional \ No newline at end of file +- Allow Null - Make selection optional diff --git a/docs/features/fields/page-link/tutorial.md b/docs/features/field/page-link/tutorial.md similarity index 95% rename from docs/features/fields/page-link/tutorial.md rename to docs/features/field/page-link/tutorial.md index b04decc9..91467663 100644 --- a/docs/features/fields/page-link/tutorial.md +++ b/docs/features/field/page-link/tutorial.md @@ -1,6 +1,7 @@ # Using the Page Link Field ## Basic Setup + 1. Create a new Field Group 2. Add a Page Link field 3. Configure options: @@ -10,6 +11,7 @@ - Enable/disable archives ## Common Use Cases + 1. Internal Navigation - Related content - Section links @@ -21,7 +23,8 @@ - Content hierarchy ## Tips + - Use clear selection filters - Consider multiple selection needs - Test search functionality -- Validate link targets \ No newline at end of file +- Validate link targets diff --git a/docs/features/fields/password/index.md b/docs/features/field/password/index.md similarity index 91% rename from docs/features/fields/password/index.md rename to docs/features/field/password/index.md index 439da575..e22d8de4 100644 --- a/docs/features/fields/password/index.md +++ b/docs/features/field/password/index.md @@ -3,6 +3,7 @@ The Password field provides a secure input for password data. It includes masking functionality and can be configured with various display options. ## Key Features + - Masked input - Custom placeholder text - Prepend/append options @@ -10,6 +11,7 @@ The Password field provides a secure input for password data. It includes maskin - Secure handling ## Settings + - Placeholder - Input placeholder text - Prepend - Text before the input -- Append - Text after the input \ No newline at end of file +- Append - Text after the input diff --git a/docs/features/fields/password/tutorial.md b/docs/features/field/password/tutorial.md similarity index 93% rename from docs/features/fields/password/tutorial.md rename to docs/features/field/password/tutorial.md index 8e2cca2b..73fc285f 100644 --- a/docs/features/fields/password/tutorial.md +++ b/docs/features/field/password/tutorial.md @@ -1,6 +1,7 @@ # Using the Password Field ## Basic Setup + 1. Create a new Field Group 2. Add a Password field 3. Configure options: @@ -10,6 +11,7 @@ - Set character limits ## Common Use Cases + 1. Security Settings - API keys - Access tokens @@ -21,7 +23,8 @@ - Access codes ## Tips + - Use secure handling - Clear validation rules - Consider masking options -- Implement proper sanitization \ No newline at end of file +- Implement proper sanitization diff --git a/docs/features/fields/post-object/index.md b/docs/features/field/post-object/index.md similarity index 92% rename from docs/features/fields/post-object/index.md rename to docs/features/field/post-object/index.md index d71fadd4..a9937cc0 100644 --- a/docs/features/fields/post-object/index.md +++ b/docs/features/field/post-object/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Content relationship management - Multiple post type support - Advanced search functionality @@ -10,8 +11,9 @@ The Post Object field creates relationships with other WordPress posts, pages, o - Bidirectional relationships ## Settings + - Post Type - Select available content types - Taxonomy - Filter by taxonomy terms - Allow Null - Make selection optional - Multiple Values - Allow multiple selections -- Return Format - Object, ID, or custom \ No newline at end of file +- Return Format - Object, ID, or custom diff --git a/docs/features/fields/post-object/tutorial.md b/docs/features/field/post-object/tutorial.md similarity index 94% rename from docs/features/fields/post-object/tutorial.md rename to docs/features/field/post-object/tutorial.md index 5dee26aa..53e18e6b 100644 --- a/docs/features/fields/post-object/tutorial.md +++ b/docs/features/field/post-object/tutorial.md @@ -1,6 +1,7 @@ # Using the Post Object Field ## Basic Setup + 1. Create a new Field Group 2. Add a Post Object field 3. Configure options: @@ -10,6 +11,7 @@ - Choose return format ## Common Use Cases + 1. Content Relationships - Related posts - Parent/child content @@ -21,7 +23,8 @@ - Content linking ## Tips + - Use clear search filters - Consider relationship structure - Plan for scalability -- Test search performance \ No newline at end of file +- Test search performance diff --git a/docs/features/fields/radio/index.md b/docs/features/field/radio/index.md similarity index 93% rename from docs/features/fields/radio/index.md rename to docs/features/field/radio/index.md index e8ea6a11..76930bff 100644 --- a/docs/features/fields/radio/index.md +++ b/docs/features/field/radio/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Single option selection - Custom choice labels - Vertical or horizontal layout @@ -10,8 +11,9 @@ The Radio field presents users with a list of options where they can select a si - Clear visual feedback ## Settings + - Choices - Define available options - Default Value - Pre-selected option - Layout - Vertical or horizontal display - Allow Other - Enable custom value input -- Return Format - Value or label \ No newline at end of file +- Return Format - Value or label diff --git a/docs/features/fields/radio/tutorial.md b/docs/features/field/radio/tutorial.md similarity index 95% rename from docs/features/fields/radio/tutorial.md rename to docs/features/field/radio/tutorial.md index e04b5544..545f0893 100644 --- a/docs/features/fields/radio/tutorial.md +++ b/docs/features/field/radio/tutorial.md @@ -1,6 +1,7 @@ # Using the Radio Field ## Basic Setup + 1. Create a new Field Group 2. Add a Radio field 3. Configure options: @@ -10,6 +11,7 @@ - Enable/disable features ## Common Use Cases + 1. Single Choice Selection - Status options - Display preferences @@ -21,7 +23,8 @@ - Display modes ## Tips + - Keep options clear - Use logical ordering - Consider mobile layout -- Provide clear labels \ No newline at end of file +- Provide clear labels diff --git a/docs/features/fields/range/index.md b/docs/features/field/range/index.md similarity index 91% rename from docs/features/fields/range/index.md rename to docs/features/field/range/index.md index c1462aeb..288da2ed 100644 --- a/docs/features/fields/range/index.md +++ b/docs/features/field/range/index.md @@ -3,6 +3,7 @@ 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. ## Key Features + - Slider interface - Min/max value limits - Step increment control @@ -10,8 +11,9 @@ The Range field provides a slider interface for selecting numeric values within - Prepend/append text ## Settings + - Default Value - Starting position - Min - Minimum allowed value - Max - Maximum allowed value - Step - Value increment size -- Prepend/Append - Add text before/after \ No newline at end of file +- Prepend/Append - Add text before/after diff --git a/docs/features/fields/range/tutorial.md b/docs/features/field/range/tutorial.md similarity index 95% rename from docs/features/fields/range/tutorial.md rename to docs/features/field/range/tutorial.md index 90d49672..45edd837 100644 --- a/docs/features/fields/range/tutorial.md +++ b/docs/features/field/range/tutorial.md @@ -1,6 +1,7 @@ # Using the Range Field ## Basic Setup + 1. Create a new Field Group 2. Add a Range field 3. Configure options: @@ -10,6 +11,7 @@ - Set default value ## Common Use Cases + 1. Numeric Ranges - Volume controls - Percentage settings @@ -21,7 +23,8 @@ - Intensity controls ## Tips + - Set intuitive ranges - Use clear min/max values - Consider step granularity -- Add helpful labels \ No newline at end of file +- Add helpful labels diff --git a/docs/features/field/repeater/index.md b/docs/features/field/repeater/index.md new file mode 100644 index 00000000..4319034c --- /dev/null +++ b/docs/features/field/repeater/index.md @@ -0,0 +1,19 @@ +# Repeater Field + +The Repeater field allows you to create a set of sub fields which can be repeated again and again. + +## Key Features + +- Flexible row management +- Multiple field types support +- Nested repeater capability +- Row reordering +- Min/max rows control + +## Settings + +- Sub Fields - Add fields to repeat +- Minimum Rows - Set required rows +- Maximum Rows - Limit total rows +- Layout - Table or block display +- Button Label - Customize add row text diff --git a/docs/features/field/repeater/tutorial.md b/docs/features/field/repeater/tutorial.md new file mode 100644 index 00000000..d8a6b061 --- /dev/null +++ b/docs/features/field/repeater/tutorial.md @@ -0,0 +1,30 @@ +# Using the Repeater Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Repeater field +3. Configure options: + - Add sub fields + - Set min/max rows + - Choose layout style + - Configure labels + +## Common Use Cases + +1. Dynamic Content + - Social media links + - Team members + - Feature lists + +2. Content Management + - Gallery items + - Related links + - Service offerings + +## Tips + +- Plan field structure carefully +- Consider nesting depth +- Use clear labels +- Set appropriate limits diff --git a/docs/features/field/select/index.md b/docs/features/field/select/index.md new file mode 100644 index 00000000..4a35edea --- /dev/null +++ b/docs/features/field/select/index.md @@ -0,0 +1,19 @@ +# Select Field + +The Select field provides a dropdown interface for selecting single or multiple options from a predefined list. + +## Key Features + +- Single/multiple selection +- Custom choices +- Ajax loading support +- Placeholder text +- Conditional logic + +## Settings + +- Choices - Define available options +- Default Value - Set initial selection +- Allow Null - Make selection optional +- Multiple - Enable multiple selections +- UI - Enhanced select interface diff --git a/docs/features/field/select/tutorial.md b/docs/features/field/select/tutorial.md new file mode 100644 index 00000000..fcc4673a --- /dev/null +++ b/docs/features/field/select/tutorial.md @@ -0,0 +1,30 @@ +# Using the Select Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Select field +3. Configure options: + - Add choice options + - Set default value + - Configure UI settings + - Enable/disable features + +## Common Use Cases + +1. Option Selection + - Status choices + - Category selection + - Preference settings + +2. Data Filtering + - View options + - Content filtering + - Display settings + +## Tips + +- Use clear option labels +- Consider grouping options +- Enable search for long lists +- Set meaningful defaults diff --git a/docs/features/field/separator/index.md b/docs/features/field/separator/index.md new file mode 100644 index 00000000..b365b289 --- /dev/null +++ b/docs/features/field/separator/index.md @@ -0,0 +1,17 @@ +# Separator Field + +The Separator field provides visual separation between fields in the editing interface. It helps organize and structure field layouts. + +## Key Features + +- Visual organization +- Custom styling +- Layout control +- Group separation +- Visual hierarchy + +## Settings + +- Label - Optional separator text +- Instructions - Field description +- Wrapper - CSS class options diff --git a/docs/features/field/separator/tutorial.md b/docs/features/field/separator/tutorial.md new file mode 100644 index 00000000..cfae555f --- /dev/null +++ b/docs/features/field/separator/tutorial.md @@ -0,0 +1,30 @@ +# Using the Separator Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Separator field +3. Configure options: + - Set label text + - Add instructions + - Style wrapper + - Position field + +## Common Use Cases + +1. Content Organization + - Section breaks + - Field grouping + - Visual hierarchy + +2. Form Structure + - Content sections + - Logical breaks + - Visual spacing + +## Tips + +- Use clear labels +- Keep consistent styling +- Consider spacing +- Group related fields diff --git a/docs/features/field/tab/index.md b/docs/features/field/tab/index.md new file mode 100644 index 00000000..d34ab4f4 --- /dev/null +++ b/docs/features/field/tab/index.md @@ -0,0 +1,18 @@ +# Tab Field + +The Tab field creates navigation tabs to organize fields into sections. It improves the editing interface by grouping related fields together. + +## Key Features + +- Field organization +- Visual navigation +- Grouped content +- Layout control +- Conditional display + +## Settings + +- Placement - Top/Left alignment +- Endpoint - Tab section end +- Label - Tab name +- Instructions - Optional help text diff --git a/docs/features/field/tab/tutorial.md b/docs/features/field/tab/tutorial.md new file mode 100644 index 00000000..e52bdfbe --- /dev/null +++ b/docs/features/field/tab/tutorial.md @@ -0,0 +1,30 @@ +# Using the Tab Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Tab field +3. Configure options: + - Set tab label + - Choose placement + - Set endpoint + - Add instructions + +## Common Use Cases + +1. Content Organization + - Content sections + - Settings groups + - Form organization + +2. Interface Design + - Complex forms + - Settings panels + - Data grouping + +## Tips + +- Use clear tab labels +- Group related fields +- Consider tab order +- Plan section breaks diff --git a/docs/features/field/taxonomy/index.md b/docs/features/field/taxonomy/index.md new file mode 100644 index 00000000..486a3420 --- /dev/null +++ b/docs/features/field/taxonomy/index.md @@ -0,0 +1,19 @@ +# Taxonomy Field + +The Taxonomy field creates an interface for selecting taxonomy terms. It supports multiple selection methods and term management. + +## Key Features + +- Term selection +- Multiple display types +- Term creation +- Hierarchical support +- Load on demand + +## Settings + +- Taxonomy - Choose taxonomy +- Appearance - Select UI style +- Allow Create - Enable term creation +- Load Terms - Auto-load options +- Save Terms - Term relationships diff --git a/docs/features/field/taxonomy/tutorial.md b/docs/features/field/taxonomy/tutorial.md new file mode 100644 index 00000000..c5ce9466 --- /dev/null +++ b/docs/features/field/taxonomy/tutorial.md @@ -0,0 +1,30 @@ +# Using the Taxonomy Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Taxonomy field +3. Configure options: + - Select taxonomy + - Choose field type + - Set load behavior + - Configure saving + +## Common Use Cases + +1. Content Classification + - Categories + - Tags + - Custom taxonomies + +2. Term Management + - Content organization + - Filtering systems + - Related content + +## Tips + +- Choose appropriate UI +- Consider term hierarchy +- Enable term creation +- Plan relationship structure diff --git a/docs/features/field/text/index.md b/docs/features/field/text/index.md new file mode 100644 index 00000000..f6f45223 --- /dev/null +++ b/docs/features/field/text/index.md @@ -0,0 +1,19 @@ +# Text Field + +The Text field provides a standard single-line text input with various formatting and validation options. + +## Key Features + +- Text input +- Character limits +- Placeholder text +- Prepend/append +- Custom formatting + +## Settings + +- Default Value - Preset text +- Placeholder - Input helper text +- Character Limit - Set max length +- Prepend - Text before input +- Append - Text after input diff --git a/docs/features/field/text/tutorial.md b/docs/features/field/text/tutorial.md new file mode 100644 index 00000000..1329b564 --- /dev/null +++ b/docs/features/field/text/tutorial.md @@ -0,0 +1,32 @@ +# Using the Text Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Text field +3. Configure options: + - Set placeholder + - Add character limits + - Configure formatting + - Set default value + +## Common Use Cases + +1. Basic Information + - Titles + - Names + - Short descriptions + - References + +2. Form Elements + - Input fields + - Search boxes + - Labels + - Identifiers + +## Tips + +- Use clear placeholders +- Set appropriate limits +- Consider validation +- Use meaningful defaults diff --git a/docs/features/field/textarea/index.md b/docs/features/field/textarea/index.md new file mode 100644 index 00000000..138bfe21 --- /dev/null +++ b/docs/features/field/textarea/index.md @@ -0,0 +1,19 @@ +# Textarea Field + +The Textarea field provides a multi-line text input for longer content with formatting options and character limits. + +## Key Features + +- Multi-line text input +- Character counting +- Rows configuration +- New line handling +- Placeholder support + +## Settings + +- Default Value - Preset content +- Placeholder - Helper text +- Character Limit - Max length +- Rows - Input height +- New Lines - Handling options diff --git a/docs/features/field/textarea/tutorial.md b/docs/features/field/textarea/tutorial.md new file mode 100644 index 00000000..c8589df3 --- /dev/null +++ b/docs/features/field/textarea/tutorial.md @@ -0,0 +1,32 @@ +# Using the Textarea Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Textarea field +3. Configure options: + - Set rows + - Add placeholder + - Configure limits + - Set line handling + +## Common Use Cases + +1. Long Text Content + - Descriptions + - Biographies + - Instructions + - Notes + +2. Content Management + - Excerpts + - Summaries + - Meta descriptions + - Comments + +## Tips + +- Set appropriate height +- Consider word limits +- Use clear placeholders +- Plan for formatting diff --git a/docs/features/field/time-picker/index.md b/docs/features/field/time-picker/index.md new file mode 100644 index 00000000..52d9e8c1 --- /dev/null +++ b/docs/features/field/time-picker/index.md @@ -0,0 +1,19 @@ +# Time Picker Field + +The Time Picker field provides an interface for selecting time values with customizable display and increment options. + +## Key Features + +- Time selection +- Format options +- Step intervals +- Range limits +- Display customization + +## Settings + +- Display Format - Time format +- Return Format - Data format +- Time Increment - Minute steps +- Placeholder - Helper text +- Default Value - Preset time diff --git a/docs/features/field/time-picker/tutorial.md b/docs/features/field/time-picker/tutorial.md new file mode 100644 index 00000000..1ce80d32 --- /dev/null +++ b/docs/features/field/time-picker/tutorial.md @@ -0,0 +1,30 @@ +# Using the Time Picker Field + +## Basic Setup + +1. Create a new Field Group +2. Add a Time Picker field +3. Configure options: + - Set time format + - Choose increment + - Set default time + - Configure display + +## Common Use Cases + +1. Schedule Management + - Event times + - Opening hours + - Appointment slots + +2. Time Settings + - Scheduling + - Time restrictions + - Operating hours + +## Tips + +- Use consistent formats +- Set appropriate steps +- Consider time zones +- Plan for validation diff --git a/docs/features/field/true-false/index.md b/docs/features/field/true-false/index.md new file mode 100644 index 00000000..a976efed --- /dev/null +++ b/docs/features/field/true-false/index.md @@ -0,0 +1,19 @@ +# True/False Field + +The True/False field provides a simple toggle switch for boolean values. It offers a clean interface for yes/no choices. + +## Key Features + +- Toggle interface +- Custom labels +- Default state +- Message display +- UI customization + +## Settings + +- Message - Field description +- Default Value - Initial state +- On Text - Custom label +- Off Text - Custom label +- UI - Style options diff --git a/docs/features/field/true-false/tutorial.md b/docs/features/field/true-false/tutorial.md new file mode 100644 index 00000000..0bd885e3 --- /dev/null +++ b/docs/features/field/true-false/tutorial.md @@ -0,0 +1,30 @@ +# Using the True/False Field + +## Basic Setup + +1. Create a new Field Group +2. Add a True/False field +3. Configure options: + - Set message + - Choose default + - Configure labels + - Style interface + +## Common Use Cases + +1. Simple Toggles + - Feature flags + - Display options + - Status switches + +2. Settings Control + - Visibility settings + - Enable/disable + - Option toggles + +## Tips + +- Use clear labels +- Set logical defaults +- Consider UI placement +- Plan conditional logic diff --git a/docs/features/field/url/index.md b/docs/features/field/url/index.md new file mode 100644 index 00000000..9b434485 --- /dev/null +++ b/docs/features/field/url/index.md @@ -0,0 +1,18 @@ +# URL Field + +The URL field provides input for web addresses with validation and formatting options. It ensures proper URL format and structure. + +## Key Features + +- URL validation +- Protocol handling +- Placeholder text +- Custom formatting +- Link preview + +## Settings + +- Default Value - Preset URL +- Placeholder - Helper text +- Protocol - Required/optional +- Return Format - URL structure diff --git a/docs/features/field/url/tutorial.md b/docs/features/field/url/tutorial.md new file mode 100644 index 00000000..44fb8c50 --- /dev/null +++ b/docs/features/field/url/tutorial.md @@ -0,0 +1,30 @@ +# Using the URL Field + +## Basic Setup + +1. Create a new Field Group +2. Add a URL field +3. Configure options: + - Set placeholder + - Configure protocol + - Set validation + - Choose format + +## Common Use Cases + +1. Web Links + - Website URLs + - Social profiles + - Resource links + +2. Reference Links + - Documentation + - External content + - Media sources + +## Tips + +- Validate URLs properly +- Consider protocols +- Use clear placeholders +- Check link validity diff --git a/docs/features/field/user/index.md b/docs/features/field/user/index.md new file mode 100644 index 00000000..84b62130 --- /dev/null +++ b/docs/features/field/user/index.md @@ -0,0 +1,19 @@ +# User Field + +The User field creates an interface for selecting WordPress users. It supports multiple selection methods and user filtering. + +## Key Features + +- User selection +- Role filtering +- Multiple formats +- Search capability +- Multiple selection + +## Settings + +- Roles - Filter by role +- Allow Null - Optional selection +- Multiple - Enable multiple +- Return Format - Object/ID/Array +- Filter - User query args diff --git a/docs/features/field/user/tutorial.md b/docs/features/field/user/tutorial.md new file mode 100644 index 00000000..deeac6e1 --- /dev/null +++ b/docs/features/field/user/tutorial.md @@ -0,0 +1,30 @@ +# Using the User Field + +## Basic Setup + +1. Create a new Field Group +2. Add a User field +3. Configure options: + - Select roles + - Set return format + - Configure multiple + - Set filters + +## Common Use Cases + +1. User Assignment + - Author selection + - Team members + - User permissions + +2. User Relations + - Content ownership + - User groups + - Access control + +## Tips + +- Filter appropriate roles +- Consider permissions +- Use clear search +- Plan user structure diff --git a/docs/features/field/wysiwyg/index.md b/docs/features/field/wysiwyg/index.md new file mode 100644 index 00000000..646153ba --- /dev/null +++ b/docs/features/field/wysiwyg/index.md @@ -0,0 +1,19 @@ +# WYSIWYG Field + +The WYSIWYG (What You See Is What You Get) field provides a rich text editor with formatting tools and media integration. + +## Key Features + +- Rich text editing +- Media integration +- Toolbar customization +- HTML handling +- Editor styles + +## Settings + +- Toolbar - Editor tools +- Media Upload - Enable/disable +- Tabs - Visual/Text tabs +- Height - Editor height +- Default Value - Initial content diff --git a/docs/features/field/wysiwyg/tutorial.md b/docs/features/field/wysiwyg/tutorial.md new file mode 100644 index 00000000..528605f1 --- /dev/null +++ b/docs/features/field/wysiwyg/tutorial.md @@ -0,0 +1,30 @@ +# Using the WYSIWYG Field + +## Basic Setup + +1. Create a new Field Group +2. Add a WYSIWYG field +3. Configure options: + - Choose toolbar + - Set media options + - Configure height + - Set defaults + +## Common Use Cases + +1. Rich Content + - Post content + - Product descriptions + - Page sections + +2. Formatted Text + - Documentation + - Guidelines + - Formatted messages + +## Tips + +- Configure appropriate tools +- Consider media handling +- Plan content structure +- Set consistent styling diff --git a/docs/features/fields/META.md b/docs/features/fields/META.md deleted file mode 100644 index f972e354..00000000 --- a/docs/features/fields/META.md +++ /dev/null @@ -1,43 +0,0 @@ -# Field Documentation Guide - -This directory contains documentation for all field types in Secure Custom Fields. - -## Structure -Each field type has its own directory containing: -- `index.md` - Main documentation for the field -- `tutorial.md` - Step-by-step tutorial for implementing the field - -## Adding New Field Documentation -1. Create a new directory for the field type -2. Create both required files -3. Follow the standard format for each file type -4. Include code examples and use cases - -## Documentation Standards -(To be added) - -## Available Fields - -- [Accordion](accordion/README.md) - Group fields into collapsible sections -- [Button Group](button-group/README.md) - Select one option from a group of buttons -- [Checkbox](checkbox/README.md) - Select one or more choices -- [Color Picker](color-picker/README.md) - Choose colors with a visual picker -- [Date Picker](date-picker/README.md) - Select dates from a calendar -- [Date/Time Picker](date-time-picker/README.md) - Select dates and times -- [Email](email/README.md) - Input and validate email addresses -- [File](file/README.md) - Upload and manage files -- [Flexible Content](flexible-content/README.md) - Create flexible content layouts -- [Gallery](gallery/README.md) - Manage collections of images -- [Google Map](google-map/README.md) - Add location data with Google Maps -- [Group](group/README.md) - Group fields together -- [Icon Picker](icon-picker/README.md) - Select from available icons -- [Image](image/README.md) - Upload and manage images -- [Link](link/README.md) - Create links with titles and targets -- [Message](message/README.md) - Display instructional text -- [Number](number/README.md) - Input numeric values -- [oEmbed](oembed/README.md) - Embed external content -- [Page Link](page-link/README.md) - Link to internal content -- [Password](password/README.md) - Securely input passwords -- [Post Object](post-object/README.md) - Relate to other posts -- [Radio](radio/README.md) - Select one choice from options -- [Range](range/README.md) - Select a numeric value with a slider \ No newline at end of file diff --git a/docs/features/fields/index.md b/docs/features/fields/index.md deleted file mode 100644 index 14e43d97..00000000 --- a/docs/features/fields/index.md +++ /dev/null @@ -1,32 +0,0 @@ -# Field Types - -Documentation for all available field types in Secure Custom Fields. - -Each field type has its own documentation and tutorial showing how to implement and use it effectively. - -## Available Fields - -- [Accordion](accordion/index.md) - Group fields into collapsible sections -- [Clone](clone/index.md) - Duplicate and reuse existing field configurations -- [Button Group](button-group/index.md) - Select one option from a group of buttons -- [Checkbox](checkbox/index.md) - Select one or more choices -- [Color Picker](color-picker/index.md) - Choose colors with a visual picker -- [Date Picker](date-picker/index.md) - Select dates from a calendar -- [Date/Time Picker](date-time-picker/index.md) - Select dates and times -- [Email](email/index.md) - Input and validate email addresses -- [File](file/index.md) - Upload and manage files -- [Flexible Content](flexible-content/index.md) - Create flexible content layouts -- [Gallery](gallery/index.md) - Manage collections of images -- [Google Map](google-map/index.md) - Add location data with Google Maps -- [Group](group/index.md) - Group fields together -- [Icon Picker](icon-picker/index.md) - Select from available icons -- [Image](image/index.md) - Upload and manage images -- [Link](link/index.md) - Create links with titles and targets -- [Message](message/index.md) - Display instructional text -- [Number](number/index.md) - Input numeric values -- [oEmbed](oembed/index.md) - Embed external content -- [Page Link](page-link/index.md) - Link to internal content -- [Password](password/index.md) - Securely input passwords -- [Post Object](post-object/index.md) - Relate to other posts -- [Radio](radio/index.md) - Select one choice from options -- [Range](range/index.md) - Select a numeric value with a slider \ No newline at end of file diff --git a/docs/features/index.md b/docs/features/index.md index 75946214..04b471b9 100644 --- a/docs/features/index.md +++ b/docs/features/index.md @@ -4,9 +4,9 @@ This section details all features available in Secure Custom Fields. ## Core Features -- [Post Types](post-types.md) - Create and manage custom post types -- [Fields](fields/index.md) - Available field types and their usage -- [API](api.md) - Programmatic access and integration +- [Post Types](post-types) - Create and manage custom post types +- [Fields](fields) - Available field types and their usage +- [API](api) - Programmatic access and integration ## Feature Categories @@ -27,27 +27,27 @@ This section details all features available in Secure Custom Fields. ## Available Fields -- [Accordion](fields/accordion/index.md) - Group fields into collapsible sections -- [Button Group](fields/button-group/index.md) - Select one option from a group of buttons -- [Checkbox](fields/checkbox/index.md) - Select one or more choices -- [Clone](fields/clone/index.md) - Duplicate and reuse existing field configurations -- [Color Picker](fields/color-picker/index.md) - Choose colors with a visual picker -- [Date Picker](fields/date-picker/index.md) - Select dates from a calendar -- [Date/Time Picker](fields/date-time-picker/index.md) - Select dates and times -- [Email](fields/email/index.md) - Input and validate email addresses -- [File](fields/file/index.md) - Upload and manage files -- [Flexible Content](fields/flexible-content/index.md) - Create flexible content layouts -- [Gallery](fields/gallery/index.md) - Manage collections of images -- [Google Map](fields/google-map/index.md) - Add location data with Google Maps -- [Group](fields/group/index.md) - Group fields together -- [Icon Picker](fields/icon-picker/index.md) - Select from available icons -- [Image](fields/image/index.md) - Upload and manage images -- [Link](fields/link/index.md) - Create links with titles and targets -- [Message](fields/message/index.md) - Display instructional text -- [Number](fields/number/index.md) - Input numeric values -- [oEmbed](fields/oembed/index.md) - Embed external content -- [Page Link](fields/page-link/index.md) - Link to internal content -- [Password](fields/password/index.md) - Securely input passwords -- [Post Object](fields/post-object/index.md) - Relate to other posts -- [Radio](fields/radio/index.md) - Select one choice from options -- [Range](fields/range/index.md) - Select a numeric value with a slider \ No newline at end of file +- [Accordion](fields/accordion) - Group fields into collapsible sections +- [Button Group](fields/button-group) - Select one option from a group of buttons +- [Checkbox](fields/checkbox) - Select one or more choices +- [Clone](fields/clone) - Duplicate and reuse existing field configurations +- [Color Picker](fields/color-picker) - Choose colors with a visual picker +- [Date Picker](fields/date-picker) - Select dates from a calendar +- [Date/Time Picker](fields/date-time-picker) - Select dates and times +- [Email](fields/email) - Input and validate email addresses +- [File](fields/file) - Upload and manage files +- [Flexible Content](fields/flexible-content) - Create flexible content layouts +- [Gallery](fields/gallery) - Manage collections of images +- [Google Map](fields/google-map) - Add location data with Google Maps +- [Group](fields/group) - Group fields together +- [Icon Picker](fields/icon-picker) - Select from available icons +- [Image](fields/image) - Upload and manage images +- [Link](fields/link) - Create links with titles and targets +- [Message](fields/message) - Display instructional text +- [Number](fields/number) - Input numeric values +- [oEmbed](fields/oembed) - Embed external content +- [Page Link](fields/page-link) - Link to internal content +- [Password](fields/password) - Securely input passwords +- [Post Object](fields/post-object) - Relate to other posts +- [Radio](fields/radio) - Select one choice from options +- [Range](fields/range) - Select a numeric value with a slider diff --git a/docs/features/post-types.md b/docs/features/post-types.md index 3ea352b5..82033d67 100644 --- a/docs/features/post-types.md +++ b/docs/features/post-types.md @@ -31,8 +31,9 @@ Create a custom post type through the admin interface: ## Examples Common use cases for custom post types: + - Products - Team Members - Portfolio Items - Testimonials -- Events \ No newline at end of file +- Events diff --git a/docs/features/api.md b/docs/features/scf-api.md similarity index 95% rename from docs/features/api.md rename to docs/features/scf-api.md index 9c079ce0..47b2c514 100644 --- a/docs/features/api.md +++ b/docs/features/scf-api.md @@ -41,4 +41,4 @@ The Secure Custom Fields API provides programmatic access to field data and plug 2. Validate data types 3. Use proper escaping 4. Check capabilities -5. Follow WordPress coding standards \ No newline at end of file +5. Follow WordPress coding standards diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 54d792cb..ffde3f82 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -4,11 +4,11 @@ This section helps you get up and running with Secure Custom Fields (SCF). Wheth ## In This Section -- [Installation](installation.md) - How to install and activate SCF -- [Quick Start](quick-start.md) - Create your first custom field group in minutes +- [Installation](installation) - How to install and activate SCF +- [Quick Start](quick-start) - Create your first custom field group in minutes ## Prerequisites - WordPress 6.0 or later - PHP 7.4 or later -- Basic understanding of WordPress development \ No newline at end of file +- Basic understanding of WordPress development diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index 4d24ca51..d4741159 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -33,4 +33,4 @@ After installation: 1. Navigate to Custom Fields in your admin menu 2. Verify you can access all plugin features -3. Create a test field group to ensure functionality \ No newline at end of file +3. Create a test field group to ensure functionality diff --git a/docs/getting-started/quick-start.md b/docs/getting-started/quick-start.md index 387c04a0..bb62b48b 100644 --- a/docs/getting-started/quick-start.md +++ b/docs/getting-started/quick-start.md @@ -26,6 +26,6 @@ Let's create a simple author bio field group: ## Next Steps -- Learn about [field types](../features/fields.md) -- Explore [advanced features](../features/README.md) -- Read the [security guidelines](../concepts/security.md) \ No newline at end of file +- Learn about [field types](../features/fields) +- Explore [advanced features](../features/README) +- Read the [security guidelines](../concepts/security) diff --git a/docs/tutorials/first-post-type.md b/docs/tutorials/first-post-type.md index 9db568df..90c83c2a 100644 --- a/docs/tutorials/first-post-type.md +++ b/docs/tutorials/first-post-type.md @@ -33,4 +33,4 @@ A step-by-step guide to creating a custom post type using Secure Custom Fields. - Add custom fields to your post type - Configure archive displays -- Set up custom taxonomies \ No newline at end of file +- Set up custom taxonomies diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index 6830efdc..6d8c02c5 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -4,9 +4,9 @@ Step-by-step guides for working with Secure Custom Fields. ## Getting Started -- [Creating Your First Post Type](first-post-type.md) - Basic post type setup -- [Field Group Basics](field-group-basics.md) - Creating and configuring field groups -- [Working with Fields](working-with-fields.md) - Using different field types +- [Creating Your First Post Type](first-post-type) - Basic post type setup +- [Field Group Basics](field-group-basics) - Creating and configuring field groups +- [Working with Fields](working-with-fields) - Using different field types ## Advanced Topics @@ -18,7 +18,8 @@ Step-by-step guides for working with Secure Custom Fields. ## Best Practices Each tutorial follows these principles: + - Clear step-by-step instructions - Practical examples - Security considerations -- Performance optimization tips \ No newline at end of file +- Performance optimization tips diff --git a/docs/scf.md b/docs/welcome.md similarity index 71% rename from docs/scf.md rename to docs/welcome.md index 10bb401e..e35349f5 100644 --- a/docs/scf.md +++ b/docs/welcome.md @@ -4,4 +4,4 @@ Secure Custom Fields is a WordPress plugin that allows you to create custom fiel ## Features -- [Fields](features/fields/index.md) - Create and manage custom fields. +- [Fields](features/fields) - Create and manage custom fields. diff --git a/includes/admin/post-types/admin-field-group.php b/includes/admin/post-types/admin-field-group.php index aacad7d4..501cdbc5 100644 --- a/includes/admin/post-types/admin-field-group.php +++ b/includes/admin/post-types/admin-field-group.php @@ -152,7 +152,6 @@ public function admin_enqueue_scripts() { array( 'fieldTypes' => acf_get_field_types_info(), 'fieldCategoriesL10n' => acf_get_field_categories_i18n(), - 'PROUpgradeURL' => 'https://www.advancedcustomfields.com/pro/', 'PROFieldTypes' => acf_get_pro_field_types(), 'PROLocationTypes' => array( 'block' => esc_html__( 'Block', 'secure-custom-fields' ), diff --git a/includes/admin/views/acf-field-group/fields.php b/includes/admin/views/acf-field-group/fields.php index 6bf2652e..48870eba 100644 --- a/includes/admin/views/acf-field-group/fields.php +++ b/includes/admin/views/acf-field-group/fields.php @@ -71,7 +71,7 @@ sprintf( /* translators: %s url to field types list */ __( 'Choose from over 30 field types. <a href="%s" target="_blank">Learn more</a>.', 'secure-custom-fields' ), - 'https://www.advancedcustomfields.com/resources/' + 'https://developer.wordpress.org/secure-custom-fields/features/fields/' ) ); ?> diff --git a/includes/admin/views/escaped-html-notice.php b/includes/admin/views/escaped-html-notice.php index 8576b3cf..cd8d3e6c 100644 --- a/includes/admin/views/escaped-html-notice.php +++ b/includes/admin/views/escaped-html-notice.php @@ -1,10 +1,9 @@ <?php -$acf_plugin_name = 'ACF PRO'; -$acf_plugin_name = '<strong>' . $acf_plugin_name . ' —</strong>'; -$acf_learn_how_to_fix = '<a href="' . 'https://www.advancedcustomfields.com/escaping-the-field/' . '" target="_blank">' . __( 'Learn more', 'secure-custom-fields' ) . '</a>'; -$acf_class = 'notice-error'; -$acf_user_can_acf = false; +$acf_plugin_name = 'Secure Custom Fields'; +$acf_plugin_name = '<strong>' . $acf_plugin_name . ' —</strong>'; +$acf_class = 'notice-error'; +$acf_user_can_acf = false; if ( current_user_can( acf_get_setting( 'capability' ) ) ) { $acf_user_can_acf = true; @@ -29,9 +28,8 @@ $acf_error_msg = sprintf( /* translators: %1$s - name of the SCF plugin. %2$s - Link to documentation. */ - __( '%1$s SCF automatically escapes unsafe HTML when rendered by <code>the_field</code> or the ACF shortcode. We\'ve detected the output of some of your fields has been modified by this change, but this may not be a breaking change. %2$s.', 'secure-custom-fields' ), - $acf_plugin_name, - $acf_learn_how_to_fix + __( '%1$s SCF automatically escapes unsafe HTML when rendered by <code>the_field</code> or the ACF shortcode. We\'ve detected the output of some of your fields has been modified by this change, but this may not be a breaking change.', 'secure-custom-fields' ), + $acf_plugin_name ); diff --git a/includes/fields.php b/includes/fields.php index 2fe101d7..a83fc303 100644 --- a/includes/fields.php +++ b/includes/fields.php @@ -414,40 +414,40 @@ function acf_get_pro_field_types() { 'clone' => array( 'name' => 'clone', 'label' => _x( 'Clone', 'noun', 'secure-custom-fields' ), - 'doc_url' => 'https://www.advancedcustomfields.com/resources/clone/', + 'doc_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/clone/', 'preview_image' => acf_get_url() . '/assets/images/field-type-previews/field-preview-clone.png', 'description' => __( 'This allows you to select and display existing fields. It does not duplicate any fields in the database, but loads and displays the selected fields at run-time. The Clone field can either replace itself with the selected fields or display the selected fields as a group of subfields.', 'secure-custom-fields' ), - 'tutorial_url' => 'https://www.advancedcustomfields.com/resources/how-to-use-the-clone-field/', + 'tutorial_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/clone/clone-tutorial/', 'category' => 'layout', 'pro' => false, ), 'flexible_content' => array( 'name' => 'flexible_content', 'label' => __( 'Flexible Content', 'secure-custom-fields' ), - 'doc_url' => 'https://www.advancedcustomfields.com/resources/flexible-content/', + 'doc_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/flexible-content/', 'preview_image' => acf_get_url() . '/assets/images/field-type-previews/field-preview-flexible-content.png', 'description' => __( 'This provides a simple, structured, layout-based editor. The Flexible Content field allows you to define, create and manage content with total control by using layouts and subfields to design the available blocks.', 'secure-custom-fields' ), - 'tutorial_url' => 'https://www.advancedcustomfields.com/resources/building-layouts-with-the-flexible-content-field-in-a-theme/', + 'tutorial_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/flexible-content/flexible-content-tutorial/', 'category' => 'layout', 'pro' => false, ), 'gallery' => array( 'name' => 'gallery', 'label' => __( 'Gallery', 'secure-custom-fields' ), - 'doc_url' => 'https://www.advancedcustomfields.com/resources/gallery/', + 'doc_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/gallery/', 'preview_image' => acf_get_url() . '/assets/images/field-type-previews/field-preview-gallery.png', 'description' => __( 'This provides an interactive interface for managing a collection of attachments. Most settings are similar to the Image field type. Additional settings allow you to specify where new attachments are added in the gallery and the minimum/maximum number of attachments allowed.', 'secure-custom-fields' ), - 'tutorial_url' => 'https://www.advancedcustomfields.com/resources/how-to-use-the-gallery-field/', + 'tutorial_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/gallery/gallery-tutorial/', 'category' => 'content', 'pro' => false, ), 'repeater' => array( 'name' => 'repeater', 'label' => __( 'Repeater', 'secure-custom-fields' ), - 'doc_url' => 'https://www.advancedcustomfields.com/resources/repeater/', + 'doc_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/repeater/', 'preview_image' => acf_get_url() . '/assets/images/field-type-previews/field-preview-repeater.png', 'description' => __( 'This provides a solution for repeating content such as slides, team members, and call-to-action tiles, by acting as a parent to a set of subfields which can be repeated again and again.', 'secure-custom-fields' ), - 'tutorial_url' => 'https://www.advancedcustomfields.com/resources/repeater/how-to-use-the-repeater-field/', + 'tutorial_url' => 'https://developer.wordpress.org/secure-custom-fields/features/fields/repeater/repeater-tutorial/', 'category' => 'layout', 'pro' => false, ), diff --git a/includes/fields/class-acf-field-accordion.php b/includes/fields/class-acf-field-accordion.php index 643be51c..e92f3f22 100644 --- a/includes/fields/class-acf-field-accordion.php +++ b/includes/fields/class-acf-field-accordion.php @@ -25,7 +25,8 @@ function initialize() { $this->category = 'layout'; $this->description = __( 'Allows you to group and organize custom fields into collapsable panels that are shown while editing content. Useful for keeping large datasets tidy.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-accordion.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/accordion/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/accordion/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/accordion/accordion-tutorial/'; $this->supports = array( 'required' => false, 'bindings' => false, diff --git a/includes/fields/class-acf-field-button-group.php b/includes/fields/class-acf-field-button-group.php index 3f417b65..dabb004f 100644 --- a/includes/fields/class-acf-field-button-group.php +++ b/includes/fields/class-acf-field-button-group.php @@ -24,7 +24,8 @@ function initialize() { $this->category = 'choice'; $this->description = __( 'A group of buttons with values that you specify, users can choose one option from the values provided.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-button-group.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/button-group/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/button-group/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/button-group/button-group-tutorial/'; $this->defaults = array( 'choices' => array(), 'default_value' => '', diff --git a/includes/fields/class-acf-field-checkbox.php b/includes/fields/class-acf-field-checkbox.php index c791a107..eaae8db8 100644 --- a/includes/fields/class-acf-field-checkbox.php +++ b/includes/fields/class-acf-field-checkbox.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'choice'; $this->description = __( 'A group of checkbox inputs that allow the user to select one, or multiple values that you specify.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-checkbox.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/checkbox/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/checkbox/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/checkbox/checkbox-tutorial/'; $this->defaults = array( 'layout' => 'vertical', 'choices' => array(), diff --git a/includes/fields/class-acf-field-clone.php b/includes/fields/class-acf-field-clone.php index a9c096b4..1acdd1e1 100644 --- a/includes/fields/class-acf-field-clone.php +++ b/includes/fields/class-acf-field-clone.php @@ -35,8 +35,8 @@ public function initialize() { $this->category = 'layout'; $this->description = __( 'Allows you to select and display existing fields. It does not duplicate any fields in the database, but loads and displays the selected fields at run-time. The Clone field can either replace itself with the selected fields or display the selected fields as a group of subfields.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-clone.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/clone/'; - $this->tutorial_url = 'https://www.advancedcustomfields.com/resources/how-to-use-the-clone-field/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/clone/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/clone/clone-tutorial/'; $this->pro = true; $this->supports = array( 'bindings' => false ); $this->defaults = array( diff --git a/includes/fields/class-acf-field-color_picker.php b/includes/fields/class-acf-field-color_picker.php index c089fc99..98fd1e0f 100644 --- a/includes/fields/class-acf-field-color_picker.php +++ b/includes/fields/class-acf-field-color_picker.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'advanced'; $this->description = __( 'An interactive UI for selecting a color, or specifying a Hex value.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-color-picker.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/color-picker/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/color-picker/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/color-picker/color-picker-tutorial/'; $this->defaults = array( 'default_value' => '', 'enable_opacity' => false, diff --git a/includes/fields/class-acf-field-date_picker.php b/includes/fields/class-acf-field-date_picker.php index 16936e42..2244e489 100644 --- a/includes/fields/class-acf-field-date_picker.php +++ b/includes/fields/class-acf-field-date_picker.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'advanced'; $this->description = __( 'An interactive UI for picking a date. The date return format can be customized using the field settings.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-date-picker.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/date-picker/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/date-picker/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/date-picker/date-picker-tutorial/'; $this->defaults = array( 'display_format' => 'd/m/Y', 'return_format' => 'd/m/Y', diff --git a/includes/fields/class-acf-field-date_time_picker.php b/includes/fields/class-acf-field-date_time_picker.php index 6ef32733..91f5d4b2 100644 --- a/includes/fields/class-acf-field-date_time_picker.php +++ b/includes/fields/class-acf-field-date_time_picker.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'advanced'; $this->description = __( 'An interactive UI for picking a date and time. The date return format can be customized using the field settings.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-date-time.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/date-time-picker/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/date-time-picker/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/date-time-picker/date-time-picker-tutorial/'; $this->defaults = array( 'display_format' => 'd/m/Y g:i a', 'return_format' => 'd/m/Y g:i a', diff --git a/includes/fields/class-acf-field-email.php b/includes/fields/class-acf-field-email.php index 7cfdac51..a8c427db 100644 --- a/includes/fields/class-acf-field-email.php +++ b/includes/fields/class-acf-field-email.php @@ -23,7 +23,8 @@ function initialize() { $this->label = __( 'Email', 'secure-custom-fields' ); $this->description = __( 'A text input specifically designed for storing email addresses.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-email.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/email/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/email/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/email/email-tutorial/'; $this->defaults = array( 'default_value' => '', 'placeholder' => '', diff --git a/includes/fields/class-acf-field-file.php b/includes/fields/class-acf-field-file.php index fa65515d..8584fa0a 100644 --- a/includes/fields/class-acf-field-file.php +++ b/includes/fields/class-acf-field-file.php @@ -24,7 +24,8 @@ function initialize() { $this->category = 'content'; $this->description = __( 'Uses the native WordPress media picker to upload, or choose files.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-file.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/file/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/file/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/file/file-tutorial/'; $this->defaults = array( 'return_format' => 'array', 'library' => 'all', diff --git a/includes/fields/class-acf-field-flexible-content.php b/includes/fields/class-acf-field-flexible-content.php index 15456b34..bb2df54e 100644 --- a/includes/fields/class-acf-field-flexible-content.php +++ b/includes/fields/class-acf-field-flexible-content.php @@ -30,8 +30,8 @@ public function initialize() { $this->category = 'layout'; $this->description = __( 'Allows you to define, create and manage content with total control by creating layouts that contain subfields that content editors can choose from.', 'secure-custom-fields' ) . ' ' . __( 'We do not recommend using this field in ACF Blocks.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-flexible-content.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/flexible-content/'; - $this->tutorial_url = 'https://www.advancedcustomfields.com/resources/building-layouts-with-the-flexible-content-field-in-a-theme/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/flexible-content/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/flexible-content/flexible-content-tutorial/'; $this->pro = true; $this->supports = array( 'bindings' => false ); $this->defaults = array( diff --git a/includes/fields/class-acf-field-gallery.php b/includes/fields/class-acf-field-gallery.php index aecdca91..7369b647 100644 --- a/includes/fields/class-acf-field-gallery.php +++ b/includes/fields/class-acf-field-gallery.php @@ -30,8 +30,8 @@ public function initialize() { $this->category = 'content'; $this->description = __( 'An interactive interface for managing a collection of attachments, such as images.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-gallery.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/gallery/'; - $this->tutorial_url = 'https://www.advancedcustomfields.com/resources/how-to-use-the-gallery-field/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/gallery/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/gallery/gallery-tutorial/'; $this->pro = true; $this->supports = array( 'bindings' => false ); $this->defaults = array( diff --git a/includes/fields/class-acf-field-google-map.php b/includes/fields/class-acf-field-google-map.php index be0df45f..55cd6d7b 100644 --- a/includes/fields/class-acf-field-google-map.php +++ b/includes/fields/class-acf-field-google-map.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'advanced'; $this->description = __( 'An interactive UI for selecting a location using Google Maps. Requires a Google Maps API key and additional configuration to display correctly.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-google-map.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/google-map/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/google-map/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/google-map/google-map-tutorial/'; $this->defaults = array( 'height' => '', 'center_lat' => '', diff --git a/includes/fields/class-acf-field-group.php b/includes/fields/class-acf-field-group.php index 32635dd7..cd7ddb01 100644 --- a/includes/fields/class-acf-field-group.php +++ b/includes/fields/class-acf-field-group.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'layout'; $this->description = __( 'Provides a way to structure fields into groups to better organize the data and the edit screen.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-group.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/group/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/group/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/group/group-tutorial/'; $this->supports = array( 'bindings' => false, ); diff --git a/includes/fields/class-acf-field-icon_picker.php b/includes/fields/class-acf-field-icon_picker.php index eba04328..014dbb01 100644 --- a/includes/fields/class-acf-field-icon_picker.php +++ b/includes/fields/class-acf-field-icon_picker.php @@ -25,7 +25,8 @@ public function initialize() { $this->category = 'advanced'; $this->description = __( 'An interactive UI for selecting an icon. Select from Dashicons, the media library, or a standalone URL input.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-icon-picker.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/icon-picker/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/icon-picker/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/icon-picker/icon-picker-tutorial/'; $this->defaults = array( 'library' => 'all', 'tabs' => array_keys( $this->get_tabs() ), @@ -244,7 +245,7 @@ public function render_field_settings( $field ) { $return_format_doc = sprintf( '<a href="%s" target="_blank">%s</a>', - 'https://www.advancedcustomfields.com/resources/icon-picker/', + $this->doc_url, __( 'Learn More', 'secure-custom-fields' ) ); diff --git a/includes/fields/class-acf-field-image.php b/includes/fields/class-acf-field-image.php index 2113dd09..784e99e2 100644 --- a/includes/fields/class-acf-field-image.php +++ b/includes/fields/class-acf-field-image.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'content'; $this->description = __( 'Uses the native WordPress media picker to upload, or choose images.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-image.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/image/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/image/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/image/image-tutorial/'; $this->defaults = array( 'return_format' => 'array', 'preview_size' => 'medium', diff --git a/includes/fields/class-acf-field-link.php b/includes/fields/class-acf-field-link.php index 3032f638..34744b46 100644 --- a/includes/fields/class-acf-field-link.php +++ b/includes/fields/class-acf-field-link.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'relational'; $this->description = __( 'Allows you to specify a link and its properties such as title and target using the WordPress native link picker.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-link.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/link/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/link/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/link/link-tutorial/'; $this->defaults = array( 'return_format' => 'array', ); diff --git a/includes/fields/class-acf-field-number.php b/includes/fields/class-acf-field-number.php index c242d741..4bd62a5b 100644 --- a/includes/fields/class-acf-field-number.php +++ b/includes/fields/class-acf-field-number.php @@ -23,7 +23,8 @@ function initialize() { $this->label = __( 'Number', 'secure-custom-fields' ); $this->description = __( 'An input limited to numerical values.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-number.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/number/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/number/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/number/number-tutorial/'; $this->defaults = array( 'default_value' => '', 'min' => '', diff --git a/includes/fields/class-acf-field-oembed.php b/includes/fields/class-acf-field-oembed.php index d2adeca7..af46e79a 100644 --- a/includes/fields/class-acf-field-oembed.php +++ b/includes/fields/class-acf-field-oembed.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'content'; $this->description = __( 'An interactive component for embedding videos, images, tweets, audio and other content by making use of the native WordPress oEmbed functionality.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-oembed.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/oembed/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/oembed/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/oembed/oembed-tutorial/'; $this->defaults = array( 'width' => '', 'height' => '', diff --git a/includes/fields/class-acf-field-page_link.php b/includes/fields/class-acf-field-page_link.php index d96d2cfb..77ad1fe8 100644 --- a/includes/fields/class-acf-field-page_link.php +++ b/includes/fields/class-acf-field-page_link.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'relational'; $this->description = __( 'An interactive dropdown to select one or more posts, pages, custom post type items or archive URLs, with the option to search.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-page-link.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/page-link/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/page-link/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/page-link/page-link-tutorial/'; $this->defaults = array( 'post_type' => array(), 'taxonomy' => array(), diff --git a/includes/fields/class-acf-field-password.php b/includes/fields/class-acf-field-password.php index e52f913b..c47d005b 100644 --- a/includes/fields/class-acf-field-password.php +++ b/includes/fields/class-acf-field-password.php @@ -22,7 +22,8 @@ function initialize() { $this->label = __( 'Password', 'secure-custom-fields' ); $this->description = __( 'An input for providing a password using a masked field.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-password.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/password/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/password/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/password/password-tutorial/'; $this->defaults = array( 'placeholder' => '', 'prepend' => '', diff --git a/includes/fields/class-acf-field-post_object.php b/includes/fields/class-acf-field-post_object.php index 16856e63..b9dc1c51 100644 --- a/includes/fields/class-acf-field-post_object.php +++ b/includes/fields/class-acf-field-post_object.php @@ -17,7 +17,8 @@ public function initialize() { $this->category = 'relational'; $this->description = __( 'An interactive and customizable UI for picking one or many posts, pages or post type items with the option to search. ', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-post-object.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/post-object/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/post-object/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/post-object/post-object-tutorial/'; $this->defaults = array( 'post_type' => array(), 'taxonomy' => array(), diff --git a/includes/fields/class-acf-field-radio.php b/includes/fields/class-acf-field-radio.php index 1733b384..96dcf641 100644 --- a/includes/fields/class-acf-field-radio.php +++ b/includes/fields/class-acf-field-radio.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'choice'; $this->description = __( 'A group of radio button inputs that allows the user to make a single selection from values that you specify.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-radio-button.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/radio-button/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/radio/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/radio/radio-tutorial/'; $this->defaults = array( 'layout' => 'vertical', 'choices' => array(), diff --git a/includes/fields/class-acf-field-range.php b/includes/fields/class-acf-field-range.php index ef79d4ef..397381f1 100644 --- a/includes/fields/class-acf-field-range.php +++ b/includes/fields/class-acf-field-range.php @@ -22,7 +22,8 @@ function initialize() { $this->label = __( 'Range', 'secure-custom-fields' ); $this->description = __( 'An input for selecting a numerical value within a specified range using a range slider element.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-range.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/range/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/range/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/range/range-tutorial/'; $this->defaults = array( 'default_value' => '', 'min' => '', diff --git a/includes/fields/class-acf-field-relationship.php b/includes/fields/class-acf-field-relationship.php index 9f59c911..aac6ff50 100644 --- a/includes/fields/class-acf-field-relationship.php +++ b/includes/fields/class-acf-field-relationship.php @@ -19,7 +19,8 @@ public function initialize() { $this->category = 'relational'; $this->description = __( 'A dual-column interface to select one or more posts, pages, or custom post type items to create a relationship with the item that you\'re currently editing. Includes options to search and filter.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-relationship.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/relationship/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/relationship/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/relationship/relationship-tutorial/'; $this->defaults = array( 'post_type' => array(), 'taxonomy' => array(), diff --git a/includes/fields/class-acf-field-repeater.php b/includes/fields/class-acf-field-repeater.php index 3b43cb77..99bbfda5 100644 --- a/includes/fields/class-acf-field-repeater.php +++ b/includes/fields/class-acf-field-repeater.php @@ -37,8 +37,8 @@ public function initialize() { $this->category = 'layout'; $this->description = __( 'Provides a solution for repeating content such as slides, team members, and call-to-action tiles, by acting as a parent to a set of subfields which can be repeated again and again.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-repeater.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/repeater/'; - $this->tutorial_url = 'https://www.advancedcustomfields.com/resources/repeater/how-to-use-the-repeater-field/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/repeater/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/repeater/repeater-tutorial/'; $this->pro = true; $this->supports = array( 'bindings' => false ); $this->defaults = array( diff --git a/includes/fields/class-acf-field-select.php b/includes/fields/class-acf-field-select.php index 957efa49..fb559372 100644 --- a/includes/fields/class-acf-field-select.php +++ b/includes/fields/class-acf-field-select.php @@ -24,7 +24,8 @@ function initialize() { $this->category = 'choice'; $this->description = __( 'A dropdown list with a selection of choices that you specify.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-select.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/select/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/select/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/select/select-tutorial/'; $this->defaults = array( 'multiple' => 0, 'allow_null' => 0, diff --git a/includes/fields/class-acf-field-tab.php b/includes/fields/class-acf-field-tab.php index 777f696b..ea6cf760 100644 --- a/includes/fields/class-acf-field-tab.php +++ b/includes/fields/class-acf-field-tab.php @@ -24,7 +24,8 @@ function initialize() { $this->category = 'layout'; $this->description = __( 'Allows you to group fields into tabbed sections in the edit screen. Useful for keeping fields organized and structured.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-tabs.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/tab/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/tab/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/tab/tab-tutorial/'; $this->supports = array( 'required' => false, 'bindings' => false, diff --git a/includes/fields/class-acf-field-taxonomy.php b/includes/fields/class-acf-field-taxonomy.php index fcbadd71..a65142eb 100644 --- a/includes/fields/class-acf-field-taxonomy.php +++ b/includes/fields/class-acf-field-taxonomy.php @@ -22,7 +22,8 @@ public function initialize() { $this->category = 'relational'; $this->description = __( 'Allows the selection of one or more taxonomy terms based on the criteria and options specified in the fields settings.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-taxonomy.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/taxonomy/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/taxonomy/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/taxonomy/taxonomy-tutorial/'; $this->defaults = array( 'taxonomy' => 'category', 'field_type' => 'checkbox', diff --git a/includes/fields/class-acf-field-text.php b/includes/fields/class-acf-field-text.php index 75318424..fab5a2dd 100644 --- a/includes/fields/class-acf-field-text.php +++ b/includes/fields/class-acf-field-text.php @@ -23,7 +23,8 @@ function initialize() { $this->label = __( 'Text', 'secure-custom-fields' ); $this->description = __( 'A basic text input, useful for storing single string values.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-text.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/text/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/text/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/text/text-tutorial/'; $this->defaults = array( 'default_value' => '', 'maxlength' => '', diff --git a/includes/fields/class-acf-field-textarea.php b/includes/fields/class-acf-field-textarea.php index a37ff6bb..9add736f 100644 --- a/includes/fields/class-acf-field-textarea.php +++ b/includes/fields/class-acf-field-textarea.php @@ -23,7 +23,8 @@ function initialize() { $this->label = __( 'Text Area', 'secure-custom-fields' ); $this->description = __( 'A basic textarea input for storing paragraphs of text.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-textarea.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/textarea/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/textarea/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/textarea/textarea-tutorial/'; $this->defaults = array( 'default_value' => '', 'new_lines' => '', diff --git a/includes/fields/class-acf-field-time_picker.php b/includes/fields/class-acf-field-time_picker.php index e2d54888..ba1c4a6a 100644 --- a/includes/fields/class-acf-field-time_picker.php +++ b/includes/fields/class-acf-field-time_picker.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'advanced'; $this->description = __( 'An interactive UI for picking a time. The time format can be customized using the field settings.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-time.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/time-picker/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/time-picker/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/time-picker/time-picker-tutorial/'; $this->defaults = array( 'display_format' => 'g:i a', 'return_format' => 'g:i a', diff --git a/includes/fields/class-acf-field-true_false.php b/includes/fields/class-acf-field-true_false.php index ac7f2672..d0551209 100644 --- a/includes/fields/class-acf-field-true_false.php +++ b/includes/fields/class-acf-field-true_false.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'choice'; $this->description = __( 'A toggle that allows you to pick a value of 1 or 0 (on or off, true or false, etc). Can be presented as a stylized switch or checkbox.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-true-false.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/true-false/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/true-false/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/true-false/true-false-tutorial/'; $this->defaults = array( 'default_value' => 0, 'message' => '', diff --git a/includes/fields/class-acf-field-url.php b/includes/fields/class-acf-field-url.php index e13a7473..a33fbcd3 100644 --- a/includes/fields/class-acf-field-url.php +++ b/includes/fields/class-acf-field-url.php @@ -19,7 +19,8 @@ public function initialize() { $this->label = __( 'URL', 'secure-custom-fields' ); $this->description = __( 'A text input specifically designed for storing web addresses.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-url.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/url/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/url/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/url/url-tutorial/'; $this->defaults = array( 'default_value' => '', 'placeholder' => '', diff --git a/includes/fields/class-acf-field-user.php b/includes/fields/class-acf-field-user.php index f66456bc..ee4cf1bc 100644 --- a/includes/fields/class-acf-field-user.php +++ b/includes/fields/class-acf-field-user.php @@ -17,7 +17,8 @@ function initialize() { $this->category = 'relational'; $this->description = __( 'Allows the selection of one or more users which can be used to create relationships between data objects.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-user.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/user/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/user/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/user/user-tutorial/'; $this->defaults = array( 'role' => '', 'multiple' => 0, diff --git a/includes/fields/class-acf-field-wysiwyg.php b/includes/fields/class-acf-field-wysiwyg.php index dedc6145..34583dd1 100644 --- a/includes/fields/class-acf-field-wysiwyg.php +++ b/includes/fields/class-acf-field-wysiwyg.php @@ -23,7 +23,8 @@ function initialize() { $this->category = 'content'; $this->description = __( 'Displays the WordPress WYSIWYG editor as seen in Posts and Pages allowing for a rich text-editing experience that also allows for multimedia content.', 'secure-custom-fields' ) . ' ' . __( 'We do not recommend using this field in ACF Blocks.', 'secure-custom-fields' ); $this->preview_image = acf_get_url() . '/assets/images/field-type-previews/field-preview-wysiwyg.png'; - $this->doc_url = 'https://www.advancedcustomfields.com/resources/wysiwyg-editor/'; + $this->doc_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/wysiwyg/'; + $this->tutorial_url = 'https://developer.wordpress.org/secure-custom-fields/features/fields/wysiwyg/wysiwyg-tutorial/'; $this->defaults = array( 'tabs' => 'all', 'toolbar' => 'full', diff --git a/package-lock.json b/package-lock.json index 591b66eb..ea2481af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "css-loader": "^7.1.2", "css-minimizer-webpack-plugin": "^7.0.0", "husky": "^9.0.11", + "markdownlint-cli": "^0.39.0", "mini-css-extract-plugin": "^2.9.1", "sass": "^1.79.5", "sass-loader": "^16.0.2", @@ -1585,6 +1586,24 @@ "node": ">=10.0.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -2015,6 +2034,17 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -2358,6 +2388,19 @@ "ajv": "^8.8.2" } }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2370,6 +2413,13 @@ "node": ">=4" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/babel-loader": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", @@ -2426,12 +2476,29 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -2955,6 +3022,16 @@ } } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -3022,12 +3099,26 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.40", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.40.tgz", "integrity": "sha512-LYm78o6if4zTasnYclgQzxEcgMoIcybWOhkATWepN95uwVVWV0/IW10v+2sIeHE+bIYWipLneTftVyQm45UY7g==", "dev": true }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -3230,6 +3321,23 @@ "flat": "cli.js" } }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3248,6 +3356,42 @@ "node": ">=6.9.0" } }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.3.16", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", + "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -3318,6 +3462,16 @@ "postcss": "^8.1.0" } }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/immutable": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", @@ -3416,6 +3570,16 @@ "node": ">=8" } }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -3454,6 +3618,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3502,6 +3676,22 @@ "node": ">=0.10.0" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -3634,6 +3824,19 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -3670,6 +3873,13 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true, + "license": "MIT" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -3691,6 +3901,16 @@ "url": "https://github.com/sponsors/antonk52" } }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -3742,6 +3962,88 @@ "yallist": "^3.0.2" } }, + "node_modules/markdown-it": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", + "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.0.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdownlint": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.33.0.tgz", + "integrity": "sha512-4lbtT14A3m0LPX1WS/3d1m7Blg+ZwiLq36WvjQqFGsX3Gik99NV+VXp/PW3n+Q62xyPdbvGOCfjPqjW+/SKMig==", + "dev": true, + "license": "MIT", + "dependencies": { + "markdown-it": "14.0.0", + "markdownlint-micromark": "0.1.8" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.39.0.tgz", + "integrity": "sha512-ZuFN7Xpsbn1Nbp0YYkeLOfXOMOfLQBik2lKRy8pVI/llmKQ2uW7x+8k5OMgF6o7XCsTDSYC/OOmeJ+3qplvnJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "~11.1.0", + "get-stdin": "~9.0.0", + "glob": "~10.3.10", + "ignore": "~5.3.0", + "js-yaml": "^4.1.0", + "jsonc-parser": "~3.2.1", + "markdownlint": "~0.33.0", + "minimatch": "~9.0.3", + "run-con": "~1.3.2" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/markdownlint-cli/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/markdownlint-micromark": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.8.tgz", + "integrity": "sha512-1ouYkMRo9/6gou9gObuMDnvZM8jC/ly3QCFQyoSPCS2XV1ZClU0xpKbL1Ar3bWWRT1RnBZkWUEiNKrI2CwiBQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -3758,6 +4060,13 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3818,6 +4127,42 @@ "webpack": "^5.0.0" } }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3936,6 +4281,30 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4495,6 +4864,16 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -4644,6 +5023,22 @@ "node": ">=8" } }, + "node_modules/run-con": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~4.1.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4792,6 +5187,19 @@ "node": ">=8" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4820,6 +5228,123 @@ "source-map": "^0.6.0" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/stylehacks": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz", @@ -5060,6 +5585,13 @@ "node": ">=8.0" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", @@ -5364,6 +5896,137 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/package.json b/package.json index 4f85f106..e327c846 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,16 @@ "terser-webpack-plugin": "^5.3.10", "webpack": "^5.95.0", "webpack-cli": "^5.1.4", - "webpack-fix-style-only-entries": "^0.6.1" + "webpack-fix-style-only-entries": "^0.6.1", + "markdownlint-cli": "^0.39.0" }, "scripts": { "build": "webpack", "watch": "webpack --watch", "clean": "rm -rf assets/build/js/*.js assets/build/css/*.css assets/build/js/*.map assets/build/css/*.map assets/build/css/*.js", - "prepare": "husky" + "prepare": "husky", + "lint:md": "markdownlint 'docs/**/*.md' --config .markdownlint.json", + "fix:md": "markdownlint 'docs/**/*.md' --config .markdownlint.json --fix" }, "dependencies": { "md5": "^2.3.0" diff --git a/readme.txt b/readme.txt index 40ef08ef..765ff9d4 100644 --- a/readme.txt +++ b/readme.txt @@ -31,6 +31,8 @@ The field interface aligns with WordPress’s native design, creating an experie Installing this plugin will deactivate plugins with matching function names/functionality, specifically Advanced Custom Fields, Advanced Custom Fields Pro, and the legacy Secure Custom Fields plugins, to avoid code errors. +Read more about Secure Custom Fields at [developer.wordpress.org/secure-custom-fields](https://developer.wordpress.org/secure-custom-fields/). + = Features = * Clear and easy-to-use setup * Robust functions for content management diff --git a/secure-custom-fields.php b/secure-custom-fields.php index e841d5ac..ee186954 100644 --- a/secure-custom-fields.php +++ b/secure-custom-fields.php @@ -4,7 +4,7 @@ * Secure Custom Fields * * Plugin Name: Secure Custom Fields - * Plugin URI: http://wordpress.org/plugins/secure-custom-fields/ + * Plugin URI: https://developer.wordpress.org/secure-custom-fields/ * Description: Secure Custom Fields (SCF) offers an intuitive way for developers to enhance WordPress content management by adding extra fields and options without coding requirements. * Version: 6.4.1-beta6 * Author: WordPress.org