ima-claude 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +463 -0
- package/dist/cli.js +1064 -0
- package/package.json +49 -0
- package/platforms/claude/adapter.ts +115 -0
- package/platforms/junie/adapter.ts +254 -0
- package/platforms/junie/agents-template.md +113 -0
- package/platforms/junie/hook-translations.md +84 -0
- package/platforms/shared/detector.ts +27 -0
- package/platforms/shared/installer.ts +202 -0
- package/platforms/shared/types.ts +78 -0
- package/plugins/ima-claude/.claude-plugin/plugin.json +25 -0
- package/plugins/ima-claude/agents/explorer.md +30 -0
- package/plugins/ima-claude/agents/implementer.md +30 -0
- package/plugins/ima-claude/agents/memory.md +42 -0
- package/plugins/ima-claude/agents/reviewer.md +53 -0
- package/plugins/ima-claude/agents/tester.md +33 -0
- package/plugins/ima-claude/agents/wp-developer.md +46 -0
- package/plugins/ima-claude/hooks/README.md +145 -0
- package/plugins/ima-claude/hooks/atlassian_prereqs.py +112 -0
- package/plugins/ima-claude/hooks/block_sed_edits.py +59 -0
- package/plugins/ima-claude/hooks/bootstrap.sh +90 -0
- package/plugins/ima-claude/hooks/bootstrap_utility_check.py +94 -0
- package/plugins/ima-claude/hooks/composer_autoload_check.py +70 -0
- package/plugins/ima-claude/hooks/docs_organization.py +104 -0
- package/plugins/ima-claude/hooks/enforce_rg_over_grep.py +56 -0
- package/plugins/ima-claude/hooks/fp_utility_check.py +90 -0
- package/plugins/ima-claude/hooks/hook_logger.py +69 -0
- package/plugins/ima-claude/hooks/hooks.json +239 -0
- package/plugins/ima-claude/hooks/jira_issue_fetch.py +79 -0
- package/plugins/ima-claude/hooks/jquery_in_wordpress.py +92 -0
- package/plugins/ima-claude/hooks/memory_bootstrap.py +79 -0
- package/plugins/ima-claude/hooks/memory_store_reminder.py +75 -0
- package/plugins/ima-claude/hooks/prompt_coach.py +125 -0
- package/plugins/ima-claude/hooks/prompt_coach_digest.md +48 -0
- package/plugins/ima-claude/hooks/prompt_coach_system.md +30 -0
- package/plugins/ima-claude/hooks/sequential_thinking_check.py +81 -0
- package/plugins/ima-claude/hooks/serena_over_grep.py +96 -0
- package/plugins/ima-claude/hooks/serena_over_read.py +66 -0
- package/plugins/ima-claude/hooks/serena_project_check.py +133 -0
- package/plugins/ima-claude/hooks/sql_injection_check.py +73 -0
- package/plugins/ima-claude/hooks/task_master_after_plan.py +31 -0
- package/plugins/ima-claude/hooks/task_master_before_impl.py +93 -0
- package/plugins/ima-claude/hooks/tavily_extract_advanced.py +48 -0
- package/plugins/ima-claude/hooks/vestige_before_external.py +86 -0
- package/plugins/ima-claude/hooks/webfetch_to_tavily.py +42 -0
- package/plugins/ima-claude/hooks/websearch_to_tavily.py +41 -0
- package/plugins/ima-claude/hooks/wp_security_check.py +150 -0
- package/plugins/ima-claude/personalities/README.md +45 -0
- package/plugins/ima-claude/personalities/enable-40k.md +69 -0
- package/plugins/ima-claude/personalities/enable-templars.md +69 -0
- package/plugins/ima-claude/skills/.research-summary.md +340 -0
- package/plugins/ima-claude/skills/architect/SKILL.md +304 -0
- package/plugins/ima-claude/skills/compound-bridge/SKILL.md +200 -0
- package/plugins/ima-claude/skills/discourse/SKILL.md +440 -0
- package/plugins/ima-claude/skills/discourse-admin/SKILL.md +192 -0
- package/plugins/ima-claude/skills/discourse-admin/references/api-endpoints.md +441 -0
- package/plugins/ima-claude/skills/discourse-admin/references/gotchas.md +107 -0
- package/plugins/ima-claude/skills/discourse-admin/references/staging-defaults.md +98 -0
- package/plugins/ima-claude/skills/discourse-admin/scripts/discourse-admin.py +319 -0
- package/plugins/ima-claude/skills/docs-organize/SKILL.md +254 -0
- package/plugins/ima-claude/skills/docs-organize/templates/active-README.md +50 -0
- package/plugins/ima-claude/skills/docs-organize/templates/archive-README.md +57 -0
- package/plugins/ima-claude/skills/docs-organize/templates/docs-README.md +43 -0
- package/plugins/ima-claude/skills/docs-organize/templates/phase-archive-README.md +83 -0
- package/plugins/ima-claude/skills/docs-organize/templates/section-README.md +48 -0
- package/plugins/ima-claude/skills/docs-organize/templates/transient-README.md +79 -0
- package/plugins/ima-claude/skills/docs-organize/templates/transient-gitignore +9 -0
- package/plugins/ima-claude/skills/ember-discourse/SKILL.md +496 -0
- package/plugins/ima-claude/skills/functional-programmer/SKILL.md +258 -0
- package/plugins/ima-claude/skills/ima-bootstrap/SKILL.md +278 -0
- package/plugins/ima-claude/skills/ima-bootstrap/references/bootstrap-patterns.md +356 -0
- package/plugins/ima-claude/skills/ima-bootstrap/references/ima-brand.md +273 -0
- package/plugins/ima-claude/skills/ima-bootstrap/references/theme-integration.md +212 -0
- package/plugins/ima-claude/skills/ima-brand/SKILL.md +108 -0
- package/plugins/ima-claude/skills/ima-brand/references/brand-identity.md +140 -0
- package/plugins/ima-claude/skills/ima-brand/references/digital-standards.md +180 -0
- package/plugins/ima-claude/skills/ima-brand/references/visual-system.md +173 -0
- package/plugins/ima-claude/skills/ima-forms-expert/SKILL.md +175 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/container-components.md +154 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/examples.md +328 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/field-components.md +298 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/form-factory.md +193 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/quick-reference.md +153 -0
- package/plugins/ima-claude/skills/ima-forms-expert/references/validation-engine.md +336 -0
- package/plugins/ima-claude/skills/jira-checkpoint/SKILL.md +178 -0
- package/plugins/ima-claude/skills/jquery/SKILL.md +413 -0
- package/plugins/ima-claude/skills/js-fp/SKILL.md +463 -0
- package/plugins/ima-claude/skills/js-fp/core-principles.md +487 -0
- package/plugins/ima-claude/skills/js-fp/examples/pure-functions.js +260 -0
- package/plugins/ima-claude/skills/js-fp/examples/tests/pure-functions.test.js +262 -0
- package/plugins/ima-claude/skills/js-fp/references/anti-patterns.md +120 -0
- package/plugins/ima-claude/skills/js-fp/references/performance-patterns.md +116 -0
- package/plugins/ima-claude/skills/js-fp/references/testing-patterns.md +134 -0
- package/plugins/ima-claude/skills/js-fp-api/SKILL.md +280 -0
- package/plugins/ima-claude/skills/js-fp-api/examples/crud-endpoint.js +258 -0
- package/plugins/ima-claude/skills/js-fp-api/references/middleware-patterns.md +134 -0
- package/plugins/ima-claude/skills/js-fp-api/references/security-sql.md +110 -0
- package/plugins/ima-claude/skills/js-fp-api/references/validation-patterns.md +165 -0
- package/plugins/ima-claude/skills/js-fp-react/SKILL.md +447 -0
- package/plugins/ima-claude/skills/js-fp-react/examples/ProductCard.tsx +65 -0
- package/plugins/ima-claude/skills/js-fp-react/references/hooks-advanced.md +136 -0
- package/plugins/ima-claude/skills/js-fp-react/references/performance-patterns.md +175 -0
- package/plugins/ima-claude/skills/js-fp-vue/SKILL.md +322 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/complete-examples.md +397 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/composables-advanced.md +282 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/reactivity-patterns.md +348 -0
- package/plugins/ima-claude/skills/js-fp-vue/references/testing.md +314 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/SKILL.md +301 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/references/ajax-patterns.md +192 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/references/event-patterns.md +136 -0
- package/plugins/ima-claude/skills/js-fp-wordpress/references/wp-integration.md +248 -0
- package/plugins/ima-claude/skills/livecanvas/SKILL.md +209 -0
- package/plugins/ima-claude/skills/livecanvas/references/livecanvas-features.md +311 -0
- package/plugins/ima-claude/skills/livecanvas/references/loops-and-logic.md +730 -0
- package/plugins/ima-claude/skills/livecanvas/references/picostrap.md +227 -0
- package/plugins/ima-claude/skills/mcp-atlassian/SKILL.md +339 -0
- package/plugins/ima-claude/skills/mcp-context7/SKILL.md +109 -0
- package/plugins/ima-claude/skills/mcp-memory/SKILL.md +182 -0
- package/plugins/ima-claude/skills/mcp-qdrant/SKILL.md +233 -0
- package/plugins/ima-claude/skills/mcp-sequential/SKILL.md +149 -0
- package/plugins/ima-claude/skills/mcp-serena/SKILL.md +174 -0
- package/plugins/ima-claude/skills/mcp-tavily/SKILL.md +118 -0
- package/plugins/ima-claude/skills/mcp-vestige/SKILL.md +259 -0
- package/plugins/ima-claude/skills/php-authnet/SKILL.md +275 -0
- package/plugins/ima-claude/skills/php-authnet/references/api-reference.md +624 -0
- package/plugins/ima-claude/skills/php-authnet/references/sandbox-testing.md +424 -0
- package/plugins/ima-claude/skills/php-fp/SKILL.md +333 -0
- package/plugins/ima-claude/skills/php-fp/examples/pure-functions.php +403 -0
- package/plugins/ima-claude/skills/php-fp/examples/tests/PureFunctionsTest.php +515 -0
- package/plugins/ima-claude/skills/php-fp/references/core-principles.md +277 -0
- package/plugins/ima-claude/skills/php-fp/references/testing-patterns.md +374 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/SKILL.md +216 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/fp-patterns.md +275 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/plugin-architecture.md +295 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/security-examples.md +203 -0
- package/plugins/ima-claude/skills/php-fp-wordpress/references/testing-strategy.md +259 -0
- package/plugins/ima-claude/skills/phpunit-wp/SKILL.md +716 -0
- package/plugins/ima-claude/skills/playwright/SKILL.md +434 -0
- package/plugins/ima-claude/skills/playwright/references/accessibility-testing.md +153 -0
- package/plugins/ima-claude/skills/playwright/references/ci-cd.md +268 -0
- package/plugins/ima-claude/skills/playwright/references/network-mocking.md +270 -0
- package/plugins/ima-claude/skills/playwright/references/visual-regression.md +215 -0
- package/plugins/ima-claude/skills/py-fp/SKILL.md +663 -0
- package/plugins/ima-claude/skills/py-fp/examples/pure-functions.py +185 -0
- package/plugins/ima-claude/skills/py-fp/examples/tests/test_pure_functions.py +244 -0
- package/plugins/ima-claude/skills/py-fp/references/core-principles.md +381 -0
- package/plugins/ima-claude/skills/py-fp/references/testing-patterns.md +283 -0
- package/plugins/ima-claude/skills/quasar-fp/SKILL.md +327 -0
- package/plugins/ima-claude/skills/quasar-fp/metadata.json +85 -0
- package/plugins/ima-claude/skills/quasar-fp/references/component-patterns.md +257 -0
- package/plugins/ima-claude/skills/quasar-fp/references/theme-integration.md +233 -0
- package/plugins/ima-claude/skills/quasar-fp/references/utility-classes.md +237 -0
- package/plugins/ima-claude/skills/quickstart/SKILL.md +129 -0
- package/plugins/ima-claude/skills/rails/SKILL.md +359 -0
- package/plugins/ima-claude/skills/resume-session/SKILL.md +68 -0
- package/plugins/ima-claude/skills/rg/SKILL.md +205 -0
- package/plugins/ima-claude/skills/ruby-fp/SKILL.md +336 -0
- package/plugins/ima-claude/skills/save-session/SKILL.md +81 -0
- package/plugins/ima-claude/skills/scorecard/SKILL.md +96 -0
- package/plugins/ima-claude/skills/skill-analyzer/SKILL.md +127 -0
- package/plugins/ima-claude/skills/skill-analyzer/references/advanced-checklist.md +44 -0
- package/plugins/ima-claude/skills/skill-analyzer/references/core-checklist.md +60 -0
- package/plugins/ima-claude/skills/skill-analyzer/scripts/analyze_skill.py +418 -0
- package/plugins/ima-claude/skills/skill-creator/LICENSE.txt +202 -0
- package/plugins/ima-claude/skills/skill-creator/SKILL.md +343 -0
- package/plugins/ima-claude/skills/skill-creator/references/output-patterns.md +82 -0
- package/plugins/ima-claude/skills/skill-creator/references/workflows.md +28 -0
- package/plugins/ima-claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/plugins/ima-claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/plugins/ima-claude/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/plugins/ima-claude/skills/task-master/SKILL.md +51 -0
- package/plugins/ima-claude/skills/task-planner/SKILL.md +228 -0
- package/plugins/ima-claude/skills/task-runner/SKILL.md +192 -0
- package/plugins/ima-claude/skills/unit-testing/SKILL.md +198 -0
- package/plugins/ima-claude/skills/unit-testing/references/mock-patterns.md +181 -0
- package/plugins/ima-claude/skills/unit-testing/references/tdd-workflow.md +177 -0
- package/plugins/ima-claude/skills/unit-testing/references/test-strategy.md +126 -0
- package/plugins/ima-claude/skills/wp-local/SKILL.md +246 -0
- package/plugins/ima-claude/skills/wp-local/references/configuration.md +198 -0
- package/plugins/ima-claude/skills/wp-local/references/wp-cli-reference.md +406 -0
- package/plugins/ima-claude/skills/wp-local/scripts/wp-local.sh +61 -0
|
@@ -0,0 +1,730 @@
|
|
|
1
|
+
# Loops & Logic (Tangible) — Complete Reference
|
|
2
|
+
|
|
3
|
+
HTML-like templating language for WordPress dynamic content. Capitalized tags are dynamic (`<Loop>`, `<Field>`), lowercase are standard HTML.
|
|
4
|
+
|
|
5
|
+
**Docs**: https://docs.loopsandlogic.com/
|
|
6
|
+
**In LiveCanvas**: Wrap in `<tangible class="live-refresh">...</tangible>`
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
|
|
10
|
+
1. [Syntax Rules](#syntax-rules)
|
|
11
|
+
2. [Loop Tag](#loop-tag)
|
|
12
|
+
3. [Field Tag](#field-tag)
|
|
13
|
+
4. [If/Else Conditions](#ifelse-conditions)
|
|
14
|
+
5. [Set/Get Variables](#setget-variables)
|
|
15
|
+
6. [Date Tag](#date-tag)
|
|
16
|
+
7. [Format Tag](#format-tag)
|
|
17
|
+
8. [Math Tag](#math-tag)
|
|
18
|
+
9. [List and Map](#list-and-map)
|
|
19
|
+
10. [ACF Integration](#acf-integration)
|
|
20
|
+
11. [Template Tag](#template-tag)
|
|
21
|
+
12. [Utility Tags](#utility-tags)
|
|
22
|
+
13. [WooCommerce](#woocommerce)
|
|
23
|
+
14. [All Dynamic Tags](#all-dynamic-tags)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Syntax Rules
|
|
28
|
+
|
|
29
|
+
**Self-closed tags** (no inner content):
|
|
30
|
+
```html
|
|
31
|
+
<Field title />
|
|
32
|
+
<Field name="title" />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Wrapping tags** (contain content):
|
|
36
|
+
```html
|
|
37
|
+
<Loop type="post"><Field title /></Loop>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Attributes** — quotes optional for simple values:
|
|
41
|
+
```html
|
|
42
|
+
<Loop type=post count=5 orderby=date>
|
|
43
|
+
<Date format="F j, Y" /> <!-- Quotes needed: spaces/special chars -->
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Dynamic values in attributes** — use `{}`:
|
|
47
|
+
```html
|
|
48
|
+
<a href="{Field url}"><Field title /></a>
|
|
49
|
+
<img src="{Field image_url}" alt="{Field title}" />
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Loop Tag
|
|
55
|
+
|
|
56
|
+
### Post Loop
|
|
57
|
+
```html
|
|
58
|
+
<Loop type="post" count="5" orderby="date" order="desc">
|
|
59
|
+
<Field title />
|
|
60
|
+
</Loop>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### Query Parameters
|
|
64
|
+
|
|
65
|
+
**Post type & selection**:
|
|
66
|
+
| Param | Example | Notes |
|
|
67
|
+
|-------|---------|-------|
|
|
68
|
+
| `type` | `post`, `page`, `product` | Any post type slug |
|
|
69
|
+
| `id` | `42` | Specific post |
|
|
70
|
+
| `name` | `hello-world` | By slug |
|
|
71
|
+
| `include` | `"1,2,3"` | Specific IDs |
|
|
72
|
+
| `exclude` | `"4,5,6"` | Exclude IDs |
|
|
73
|
+
| `count` | `10` | Limit results |
|
|
74
|
+
| `offset` | `5` | Skip first N |
|
|
75
|
+
| `status` | `publish`, `draft` | Post status |
|
|
76
|
+
| `sticky` | `true`, `only`, `false` | Sticky post handling |
|
|
77
|
+
|
|
78
|
+
**Ordering**:
|
|
79
|
+
| `orderby` value | Description |
|
|
80
|
+
|-----------------|-------------|
|
|
81
|
+
| `date` | Publish date (default) |
|
|
82
|
+
| `modified` | Last modified |
|
|
83
|
+
| `title` | Alphabetical |
|
|
84
|
+
| `random` | Random order |
|
|
85
|
+
| `menu_order` | Menu/page order |
|
|
86
|
+
| `comment_count` | Most commented |
|
|
87
|
+
| `id` | By post ID |
|
|
88
|
+
| `name` | By slug |
|
|
89
|
+
| `author` | By author |
|
|
90
|
+
| `relevance` | With search queries |
|
|
91
|
+
|
|
92
|
+
`order`: `asc` or `desc`
|
|
93
|
+
|
|
94
|
+
**Author filtering**:
|
|
95
|
+
```html
|
|
96
|
+
<Loop type=post author="5">
|
|
97
|
+
<Loop type=post author="admin"> <!-- By slug -->
|
|
98
|
+
<Loop type=post exclude_author="2">
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Date filtering**:
|
|
102
|
+
```html
|
|
103
|
+
<Loop type=post publish_compare="after" publish_date="2 weeks ago">
|
|
104
|
+
<Loop type=post publish_year="2024" publish_month="6">
|
|
105
|
+
```
|
|
106
|
+
`publish_compare`: `before`, `after`, `on`, `not_on`
|
|
107
|
+
|
|
108
|
+
**Taxonomy filtering**:
|
|
109
|
+
```html
|
|
110
|
+
<Loop type=post category="news">
|
|
111
|
+
<Loop type=post tag="featured">
|
|
112
|
+
<Loop type=post taxonomy="genre" terms="comedy,drama">
|
|
113
|
+
<Loop type=post taxonomy="color" terms="red" taxonomy_2="size" terms_2="large" taxonomy_relation="AND">
|
|
114
|
+
<Loop type=post exclude_category="uncategorized">
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Custom field filtering**:
|
|
118
|
+
```html
|
|
119
|
+
<Loop type=post custom_field="price" custom_field_value="100" custom_field_compare=">=" custom_field_type="numeric">
|
|
120
|
+
```
|
|
121
|
+
- `custom_field_compare`: `=`, `!=`, `>`, `<`, `>=`, `<=`
|
|
122
|
+
- `custom_field_type`: `string`, `numeric`, `date`
|
|
123
|
+
- Up to 3 custom fields: `custom_field_2`, `custom_field_value_2`, etc.
|
|
124
|
+
|
|
125
|
+
**Custom date field filtering**:
|
|
126
|
+
```html
|
|
127
|
+
<Loop type=post custom_date_field="event_date" custom_date_field_value="today" custom_date_field_compare="after" custom_date_field_format="Y-m-d">
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Pagination**:
|
|
131
|
+
```html
|
|
132
|
+
<Loop type=post paged="10"> <!-- AJAX pagination, 10 per page -->
|
|
133
|
+
<Loop type=post search="{Url query=s}"> <!-- Search integration -->
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Other Loop Types
|
|
137
|
+
|
|
138
|
+
**Taxonomy terms**:
|
|
139
|
+
```html
|
|
140
|
+
<Loop type="taxonomy_term" taxonomy="category" hide_empty="true" orderby="name" parent="0">
|
|
141
|
+
<Field title /> (<Field count />)
|
|
142
|
+
</Loop>
|
|
143
|
+
|
|
144
|
+
<!-- Shortcut for current post's terms -->
|
|
145
|
+
<Taxonomy category>
|
|
146
|
+
<Term title />
|
|
147
|
+
</Taxonomy>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Users**:
|
|
151
|
+
```html
|
|
152
|
+
<Loop type="user" role="author" orderby="display_name">
|
|
153
|
+
<Field full_name /> — <Field email />
|
|
154
|
+
</Loop>
|
|
155
|
+
|
|
156
|
+
<!-- Current user shortcut -->
|
|
157
|
+
<User full_name />
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Attachments**:
|
|
161
|
+
```html
|
|
162
|
+
<Loop type="attachment">
|
|
163
|
+
<Field url /> — <Field mime_type />
|
|
164
|
+
</Loop>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Menus**:
|
|
168
|
+
```html
|
|
169
|
+
<Loop type="menu" name="primary">
|
|
170
|
+
<a href="{Field url}"><Field title /></a>
|
|
171
|
+
</Loop>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Data structures**:
|
|
175
|
+
```html
|
|
176
|
+
<Loop times="5">Item <Field count /></Loop>
|
|
177
|
+
<Loop items="red,green,blue"><Field /></Loop>
|
|
178
|
+
<Loop list="my_list"><Field /></Loop>
|
|
179
|
+
<Loop map="my_map"><Field key /> = <Field value /></Loop>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Loop Position Helpers
|
|
183
|
+
|
|
184
|
+
Inside any loop:
|
|
185
|
+
```html
|
|
186
|
+
<Field count /> <!-- Current iteration (1-based) -->
|
|
187
|
+
<Field total /> <!-- Total items -->
|
|
188
|
+
<If first>First item</If>
|
|
189
|
+
<If last>Last item</If>
|
|
190
|
+
<If not last>, </If> <!-- Comma-separated list -->
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Field Tag
|
|
196
|
+
|
|
197
|
+
```html
|
|
198
|
+
<!-- Post fields -->
|
|
199
|
+
<Field title />
|
|
200
|
+
<Field content />
|
|
201
|
+
<Field excerpt />
|
|
202
|
+
<Field id />
|
|
203
|
+
<Field name /> <!-- Slug -->
|
|
204
|
+
<Field url /> <!-- Permalink -->
|
|
205
|
+
<Field edit_url />
|
|
206
|
+
<Field publish_date />
|
|
207
|
+
<Field modified_date />
|
|
208
|
+
<Field status />
|
|
209
|
+
<Field author /> <!-- Author ID -->
|
|
210
|
+
<Field author_full_name />
|
|
211
|
+
<Field author_url />
|
|
212
|
+
<Field image /> <!-- Featured image as <img> -->
|
|
213
|
+
<Field image_url />
|
|
214
|
+
<Field image_url size="thumbnail" />
|
|
215
|
+
<Field image_srcset />
|
|
216
|
+
<Field image_alt />
|
|
217
|
+
|
|
218
|
+
<!-- Hierarchical -->
|
|
219
|
+
<Field parent />
|
|
220
|
+
<Field parent_title />
|
|
221
|
+
<Field children_ids />
|
|
222
|
+
<Field ancestors />
|
|
223
|
+
|
|
224
|
+
<!-- From specific post -->
|
|
225
|
+
<Field title type="page" name="about" />
|
|
226
|
+
<Field title type="post" id="42" />
|
|
227
|
+
|
|
228
|
+
<!-- Date formatting shortcut -->
|
|
229
|
+
<Field publish_date date_format="F j, Y" />
|
|
230
|
+
|
|
231
|
+
<!-- String operations shortcut -->
|
|
232
|
+
<Field phone replace=" " with="-" />
|
|
233
|
+
|
|
234
|
+
<!-- All custom fields (debugging) -->
|
|
235
|
+
<Field all />
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## If/Else Conditions
|
|
241
|
+
|
|
242
|
+
### Basic Structure
|
|
243
|
+
```html
|
|
244
|
+
<If field="image" exists>
|
|
245
|
+
Has image
|
|
246
|
+
<Else />
|
|
247
|
+
No image
|
|
248
|
+
</If>
|
|
249
|
+
|
|
250
|
+
<If field="color" is value="red">
|
|
251
|
+
Red
|
|
252
|
+
<Else if field="color" is value="blue" />
|
|
253
|
+
Blue
|
|
254
|
+
<Else />
|
|
255
|
+
Other
|
|
256
|
+
</If>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Subjects
|
|
260
|
+
|
|
261
|
+
| Subject | Example |
|
|
262
|
+
|---------|---------|
|
|
263
|
+
| `field="name"` | `<If field="price" more_than value="100">` |
|
|
264
|
+
| `check="..."` | `<If check="{Get var}" is value="abc">` |
|
|
265
|
+
| `count` | `<If count more_than value="2">` |
|
|
266
|
+
| `total` | `<If total more_than value="5">` |
|
|
267
|
+
| `first` / `last` | `<If first>` |
|
|
268
|
+
| `loop` | `<If loop exists type="post" category="news">` |
|
|
269
|
+
| `user` | `<If user exists>` (logged in) |
|
|
270
|
+
| `user_role` | `<If user_role includes value="administrator">` |
|
|
271
|
+
| `user_field="name"` | `<If user_field="email" value="test@test.com">` |
|
|
272
|
+
| `route="..."` | `<If route="product/" exists>` |
|
|
273
|
+
| `singular` | `<If singular type="product">` |
|
|
274
|
+
| `acf_true_false` | `<If acf_true_false="field_name">` |
|
|
275
|
+
| `acf_date` | `<If acf_date="start_date" after="today">` |
|
|
276
|
+
|
|
277
|
+
### Comparisons
|
|
278
|
+
|
|
279
|
+
| Operator | Description |
|
|
280
|
+
|----------|-------------|
|
|
281
|
+
| `exists` | Not empty (default when no value) |
|
|
282
|
+
| `not_exists` | Is empty |
|
|
283
|
+
| `is` | Exact match (default when value given) |
|
|
284
|
+
| `is_not` | Does not match |
|
|
285
|
+
| `starts_with` | Begins with |
|
|
286
|
+
| `ends_with` | Ends with |
|
|
287
|
+
| `includes` | Contains |
|
|
288
|
+
| `not_includes` | Does not contain |
|
|
289
|
+
| `more_than` | Greater than |
|
|
290
|
+
| `more_than_or_equal` | >= |
|
|
291
|
+
| `less_than` | Less than |
|
|
292
|
+
| `less_than_or_equal` | <= |
|
|
293
|
+
| `matches_pattern` | Regex match |
|
|
294
|
+
| `before` / `after` | Date comparison |
|
|
295
|
+
| `before_inclusive` / `after_inclusive` | Date comparison (inclusive) |
|
|
296
|
+
|
|
297
|
+
### Logic Variables (AND/OR)
|
|
298
|
+
```html
|
|
299
|
+
<!-- AND: all must be true -->
|
|
300
|
+
<Set logic="both" all="true">
|
|
301
|
+
<If field="price" more_than value="100">true<Else />false</If>
|
|
302
|
+
<If field="stock" exists>true<Else />false</If>
|
|
303
|
+
</Set>
|
|
304
|
+
<If logic="both">Both conditions met</If>
|
|
305
|
+
|
|
306
|
+
<!-- OR: any true -->
|
|
307
|
+
<Set logic="either" any="true">
|
|
308
|
+
<If field="color" is value="red">true<Else />false</If>
|
|
309
|
+
<If field="color" is value="blue">true<Else />false</If>
|
|
310
|
+
</Set>
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Switch/When
|
|
314
|
+
```html
|
|
315
|
+
<Switch field="status" is>
|
|
316
|
+
<When value="active" />Active
|
|
317
|
+
<When value="pending" />Pending
|
|
318
|
+
<When value="closed" />Closed
|
|
319
|
+
<When />Unknown
|
|
320
|
+
</Switch>
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Set/Get Variables
|
|
326
|
+
|
|
327
|
+
```html
|
|
328
|
+
<Set name="my_var"><Field title /></Set>
|
|
329
|
+
<Get name="my_var" />
|
|
330
|
+
|
|
331
|
+
<!-- Shorthand -->
|
|
332
|
+
<Set my_var><Field title /></Set>
|
|
333
|
+
<Get my_var />
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Variable Types
|
|
337
|
+
|
|
338
|
+
| Type | Set | Get | Scope |
|
|
339
|
+
|------|-----|-----|-------|
|
|
340
|
+
| Regular | `<Set name="x">` | `<Get name="x" />` | Page |
|
|
341
|
+
| Local | `<Set local="x">` | `<Get local="x" />` | Template only |
|
|
342
|
+
| Template | `<Set template="x">` | `<Get template="x" />` | Reusable fragment |
|
|
343
|
+
| Math | `<Set math="x">0</Set>` | `<Get math="x" />` | Math operations |
|
|
344
|
+
| Logic | `<Set logic="x">` | `<If logic="x">` | Boolean compound |
|
|
345
|
+
| Loop | `<Set loop="x">` | `<Get loop="x" />` | Stored loop |
|
|
346
|
+
| Query | `<Set query="x">` | `<Loop query="x">` | Stored query |
|
|
347
|
+
| JS | `<Set js="x">` | N/A (Script tab) | Pass to JavaScript |
|
|
348
|
+
| Sass | `<Set sass="x">` | N/A (Style tab) | Pass to SCSS |
|
|
349
|
+
|
|
350
|
+
### Template Variables (Reusable Fragments)
|
|
351
|
+
```html
|
|
352
|
+
<Set template="card">
|
|
353
|
+
<div class="card h-100">
|
|
354
|
+
<h5 class="card-title"><Field title /></h5>
|
|
355
|
+
<p><Field excerpt /></p>
|
|
356
|
+
</div>
|
|
357
|
+
</Set>
|
|
358
|
+
|
|
359
|
+
<Loop type="post" count="5">
|
|
360
|
+
<Get template="card" />
|
|
361
|
+
</Loop>
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Passing Variables to Templates
|
|
365
|
+
```html
|
|
366
|
+
<Template name="my-template" color="red" size="large" />
|
|
367
|
+
<!-- Inside template: -->
|
|
368
|
+
<Get local="color" /> <!-- red -->
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Date Tag
|
|
374
|
+
|
|
375
|
+
```html
|
|
376
|
+
<Date /> <!-- Admin format -->
|
|
377
|
+
<Date format="Y-m-d" /> <!-- 2024-07-18 -->
|
|
378
|
+
<Date format="F j, Y" /> <!-- July 18, 2024 -->
|
|
379
|
+
<Date format="timestamp" /> <!-- UNIX timestamp -->
|
|
380
|
+
<Date format="ago" /> <!-- "3 days ago" -->
|
|
381
|
+
|
|
382
|
+
<!-- Arithmetic -->
|
|
383
|
+
<Date add="1 week" />
|
|
384
|
+
<Date subtract="3 days" format="Y-m-d" />
|
|
385
|
+
<Date add="1 month">2024-01-15</Date>
|
|
386
|
+
|
|
387
|
+
<!-- From field -->
|
|
388
|
+
<Date format="F j, Y"><Field publish_date /></Date>
|
|
389
|
+
|
|
390
|
+
<!-- Parse non-standard format -->
|
|
391
|
+
<Date from_format="d/m/Y">25/12/2024</Date>
|
|
392
|
+
|
|
393
|
+
<!-- Locale -->
|
|
394
|
+
<Date format="l j F Y" locale="fr" />
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
**PHP format codes**: `Y` (year), `m` (month 01-12), `d` (day 01-31), `H` (hour 24h), `i` (min), `s` (sec), `F` (month name), `M` (short month), `j` (day no zero), `g` (hour 12h), `a` (am/pm), `l` (day name), `D` (short day), `U` (timestamp)
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Format Tag
|
|
402
|
+
|
|
403
|
+
```html
|
|
404
|
+
<!-- Case -->
|
|
405
|
+
<Format case="upper">hello</Format> <!-- HELLO -->
|
|
406
|
+
<Format case="lower">HELLO</Format> <!-- hello -->
|
|
407
|
+
<Format case="capital">hello world</Format> <!-- Hello world -->
|
|
408
|
+
<Format case="capital_words">hello world</Format> <!-- Hello World -->
|
|
409
|
+
|
|
410
|
+
<!-- Truncate -->
|
|
411
|
+
<Format length="100"><Field content /></Format>
|
|
412
|
+
<Format words="20"><Field content /></Format>
|
|
413
|
+
|
|
414
|
+
<!-- Replace -->
|
|
415
|
+
<Format replace=" " with="-">hello world</Format>
|
|
416
|
+
<Format replace_pattern="/(\d{3})(\d{4})/" with="$1-$2">1234567</Format>
|
|
417
|
+
|
|
418
|
+
<!-- Prefix/Suffix -->
|
|
419
|
+
<Format prefix="color-">blue</Format>
|
|
420
|
+
<Format suffix="-mode">dark</Format>
|
|
421
|
+
|
|
422
|
+
<!-- Split/Join -->
|
|
423
|
+
<Format split=",">red,green,blue</Format>
|
|
424
|
+
<Format join=", ">["red","green","blue"]</Format>
|
|
425
|
+
|
|
426
|
+
<!-- Trim -->
|
|
427
|
+
<Format trim> hello </Format>
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## Math Tag
|
|
433
|
+
|
|
434
|
+
```html
|
|
435
|
+
<Math>5 + 3</Math> <!-- 8 -->
|
|
436
|
+
<Math><Field price /> * 1.1</Math> <!-- price + 10% -->
|
|
437
|
+
|
|
438
|
+
<!-- Accumulator pattern -->
|
|
439
|
+
<Set math="total">0</Set>
|
|
440
|
+
<Loop type="post" post_type="product">
|
|
441
|
+
<Math>total = total + <Field custom_field="price" /></Math>
|
|
442
|
+
</Loop>
|
|
443
|
+
Total: $<Get math="total" />
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
Operators: `+`, `-`, `*`, `/`, parentheses
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## List and Map
|
|
451
|
+
|
|
452
|
+
### List
|
|
453
|
+
```html
|
|
454
|
+
<List name="colors">
|
|
455
|
+
<Item>Red</Item>
|
|
456
|
+
<Item>Green</Item>
|
|
457
|
+
<Item>Blue</Item>
|
|
458
|
+
</List>
|
|
459
|
+
|
|
460
|
+
<Loop list="colors"><Field /></Loop>
|
|
461
|
+
|
|
462
|
+
<!-- Quick inline -->
|
|
463
|
+
<Loop items="red,green,blue"><Field /></Loop>
|
|
464
|
+
|
|
465
|
+
<!-- Access by index (1-based) -->
|
|
466
|
+
<Field list="colors" item="1" /> <!-- Red -->
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### Map
|
|
470
|
+
```html
|
|
471
|
+
<Map name="config">
|
|
472
|
+
<Key primary_color>#ff0000</Key>
|
|
473
|
+
<Key site_name>My Site</Key>
|
|
474
|
+
</Map>
|
|
475
|
+
|
|
476
|
+
<Field map="config" key="primary_color" />
|
|
477
|
+
|
|
478
|
+
<Loop map_keys="config">
|
|
479
|
+
<Field key /> = <Field value />
|
|
480
|
+
</Loop>
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
---
|
|
484
|
+
|
|
485
|
+
## ACF Integration
|
|
486
|
+
|
|
487
|
+
### Simple Fields
|
|
488
|
+
```html
|
|
489
|
+
<Field acf_text="field_name" />
|
|
490
|
+
<Field acf_textarea="field_name" />
|
|
491
|
+
<Field acf_editor="field_name" /> <!-- WYSIWYG -->
|
|
492
|
+
<Field acf_email="field_name" />
|
|
493
|
+
<Field acf_url="field_name" />
|
|
494
|
+
<Field acf_number="field_name" />
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### Image
|
|
498
|
+
```html
|
|
499
|
+
<Field acf_image="hero" field="url" />
|
|
500
|
+
<Loop acf_image="hero">
|
|
501
|
+
<img src="{Field url}" srcset="{Field srcset}" alt="{Field alt}" />
|
|
502
|
+
</Loop>
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
### Gallery
|
|
506
|
+
```html
|
|
507
|
+
<Loop acf_gallery="photos">
|
|
508
|
+
<img src="{Field url}" alt="{Field alt}" />
|
|
509
|
+
</Loop>
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
### File
|
|
513
|
+
```html
|
|
514
|
+
<a href="{Field acf_file=download field=url}">Download</a>
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### Link
|
|
518
|
+
```html
|
|
519
|
+
<Loop acf_link="cta_link">
|
|
520
|
+
<a href="{Field url}" target="{Field target}"><Field title /></a>
|
|
521
|
+
</Loop>
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### Date/Time
|
|
525
|
+
```html
|
|
526
|
+
<Field acf_date="event_date" />
|
|
527
|
+
<Field acf_date="event_date" format="l j F Y" />
|
|
528
|
+
<Field acf_date_time="start" />
|
|
529
|
+
<Field acf_time="doors_open" />
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### Choice Fields
|
|
533
|
+
```html
|
|
534
|
+
<Field acf_select="color" />
|
|
535
|
+
<Field acf_radio="size" />
|
|
536
|
+
|
|
537
|
+
<!-- Multiple select / Checkbox -->
|
|
538
|
+
<Loop acf_select="colors"><Field /></Loop>
|
|
539
|
+
<Loop acf_checkbox="options"><Field /></Loop>
|
|
540
|
+
|
|
541
|
+
<!-- Label (when return format is value) -->
|
|
542
|
+
<Field acf_select="color" field="label" />
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
### True/False
|
|
546
|
+
```html
|
|
547
|
+
<If acf_true_false="show_section">
|
|
548
|
+
Section content
|
|
549
|
+
</If>
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
### Relational
|
|
553
|
+
```html
|
|
554
|
+
<Loop acf_post="related_post"><Field title /></Loop>
|
|
555
|
+
<Loop acf_relationship="related"><Field title /></Loop>
|
|
556
|
+
<Loop acf_taxonomy="categories"><Field title /></Loop>
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
### Repeater
|
|
560
|
+
```html
|
|
561
|
+
<Loop acf_repeater="team_members">
|
|
562
|
+
<Field name />
|
|
563
|
+
<Field role />
|
|
564
|
+
<img src="{Field acf_image=photo field=url}" />
|
|
565
|
+
</Loop>
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
### Group
|
|
569
|
+
```html
|
|
570
|
+
<Loop acf_group="address">
|
|
571
|
+
<Field street />, <Field city />, <Field state />
|
|
572
|
+
</Loop>
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
### Flexible Content
|
|
576
|
+
```html
|
|
577
|
+
<Loop acf_flexible="page_sections">
|
|
578
|
+
<If field="layout" value="hero">
|
|
579
|
+
<Field acf_editor="content" />
|
|
580
|
+
<Else if field="layout" value="gallery" />
|
|
581
|
+
<Loop acf_gallery="images">
|
|
582
|
+
<img src="{Field url}" />
|
|
583
|
+
</Loop>
|
|
584
|
+
<Else if field="layout" value="cta" />
|
|
585
|
+
<a href="{Field acf_url=link}"><Field acf_text=label /></a>
|
|
586
|
+
</If>
|
|
587
|
+
</Loop>
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
### Google Map
|
|
591
|
+
```html
|
|
592
|
+
<Loop acf_google_map="location">
|
|
593
|
+
<Field address /> (lat: <Field lat />, lng: <Field lng />)
|
|
594
|
+
</Loop>
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
---
|
|
598
|
+
|
|
599
|
+
## Template Tag
|
|
600
|
+
|
|
601
|
+
```html
|
|
602
|
+
<!-- By name or ID -->
|
|
603
|
+
<Template name="card-template" />
|
|
604
|
+
<Template id="74" />
|
|
605
|
+
|
|
606
|
+
<!-- Pass variables -->
|
|
607
|
+
<Template name="card" color="red" size="large" />
|
|
608
|
+
|
|
609
|
+
<!-- Theme template parts -->
|
|
610
|
+
<Template theme="sidebar" />
|
|
611
|
+
<Template theme="part" name="template-parts/footer" />
|
|
612
|
+
|
|
613
|
+
<!-- Shortcode equivalent -->
|
|
614
|
+
[template name="my-template"]
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
---
|
|
618
|
+
|
|
619
|
+
## Utility Tags
|
|
620
|
+
|
|
621
|
+
```html
|
|
622
|
+
<!-- Site info -->
|
|
623
|
+
<Site name /> <Site url /> <Site description />
|
|
624
|
+
|
|
625
|
+
<!-- URLs -->
|
|
626
|
+
<Url site /> <Url current /> <Url query="param" />
|
|
627
|
+
|
|
628
|
+
<!-- Paths -->
|
|
629
|
+
<Path uploads /> <Path theme />
|
|
630
|
+
|
|
631
|
+
<!-- Settings -->
|
|
632
|
+
<Setting timezone_string /> <Setting date_format />
|
|
633
|
+
|
|
634
|
+
<!-- WordPress shortcode -->
|
|
635
|
+
<Shortcode contact-form-7 id="123" title="Contact" />
|
|
636
|
+
|
|
637
|
+
<!-- Comments (not rendered) -->
|
|
638
|
+
<Note>Dev note: this won't appear</Note>
|
|
639
|
+
|
|
640
|
+
<!-- Raw output (skip L&L processing) -->
|
|
641
|
+
<Raw><Loop> would not be processed</Raw>
|
|
642
|
+
|
|
643
|
+
<!-- Redirect -->
|
|
644
|
+
<Redirect url="/login" />
|
|
645
|
+
|
|
646
|
+
<!-- Route segments -->
|
|
647
|
+
<Route /> <Route part="1" /> <Route part="-1" />
|
|
648
|
+
|
|
649
|
+
<!-- Embed -->
|
|
650
|
+
<Embed url="https://youtube.com/watch?v=..." />
|
|
651
|
+
|
|
652
|
+
<!-- Mobile detect -->
|
|
653
|
+
<If mobile_detect="phone">Mobile<Else />Desktop</If>
|
|
654
|
+
|
|
655
|
+
<!-- Async loading -->
|
|
656
|
+
<Async>Heavy content loaded async</Async>
|
|
657
|
+
|
|
658
|
+
<!-- Caching -->
|
|
659
|
+
<Cache name="sidebar" expire="1 hour">Expensive content</Cache>
|
|
660
|
+
|
|
661
|
+
<!-- Random -->
|
|
662
|
+
<Random />
|
|
663
|
+
|
|
664
|
+
<!-- Exit / Catch -->
|
|
665
|
+
<Catch exit>
|
|
666
|
+
<If field="status" is value="disabled"><Exit>Disabled</Exit></If>
|
|
667
|
+
Normal content
|
|
668
|
+
</Catch>
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
---
|
|
672
|
+
|
|
673
|
+
## WooCommerce
|
|
674
|
+
|
|
675
|
+
Products are `product` post type — query like any CPT:
|
|
676
|
+
|
|
677
|
+
```html
|
|
678
|
+
<Loop type="product" taxonomy="product_cat" terms="shirts" count="6">
|
|
679
|
+
<Field title />
|
|
680
|
+
<img src="{Field image_url}" />
|
|
681
|
+
<a href="{Field url}">View</a>
|
|
682
|
+
</Loop>
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
**Product attributes** (stored as `pa_` taxonomies):
|
|
686
|
+
```html
|
|
687
|
+
<Loop type="taxonomy_term" taxonomy="pa_color" post="current">
|
|
688
|
+
<Field title />
|
|
689
|
+
</Loop>
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
**L&L Pro** adds dedicated WooCommerce loop types: `woo_product`, `woo_cart`, `woo_order`, `woo_order_item`, `woo_coupon`, `woo_subscription`, `woo_product_variation`, `woo_product_review`, etc.
|
|
693
|
+
|
|
694
|
+
---
|
|
695
|
+
|
|
696
|
+
## All Dynamic Tags
|
|
697
|
+
|
|
698
|
+
| Tag | Type | Purpose |
|
|
699
|
+
|-----|------|---------|
|
|
700
|
+
| `Loop` | Wrapping | Query & iterate |
|
|
701
|
+
| `Field` | Self-closed | Display field value |
|
|
702
|
+
| `If` | Wrapping | Conditional |
|
|
703
|
+
| `Set` | Wrapping | Store variable |
|
|
704
|
+
| `Get` | Self-closed | Retrieve variable |
|
|
705
|
+
| `Date` | Both | Date formatting |
|
|
706
|
+
| `Format` | Wrapping | String operations |
|
|
707
|
+
| `List` | Wrapping | Array creation |
|
|
708
|
+
| `Map` | Wrapping | Associative array |
|
|
709
|
+
| `Template` | Self-closed | Render saved template |
|
|
710
|
+
| `Shortcode` | Self-closed | WP shortcode |
|
|
711
|
+
| `Taxonomy` | Wrapping | Term loop shortcut |
|
|
712
|
+
| `Term` | Self-closed | Current term field |
|
|
713
|
+
| `User` | Self-closed | Current user field |
|
|
714
|
+
| `Url` | Self-closed | URL values |
|
|
715
|
+
| `Path` | Self-closed | File paths |
|
|
716
|
+
| `Site` | Self-closed | Site info |
|
|
717
|
+
| `Setting` | Self-closed | WP settings |
|
|
718
|
+
| `Embed` | Self-closed | Media embed |
|
|
719
|
+
| `Route` | Both | URL routing |
|
|
720
|
+
| `Redirect` | Self-closed | User redirect |
|
|
721
|
+
| `Note` | Wrapping | Comment |
|
|
722
|
+
| `Raw` | Wrapping | Skip processing |
|
|
723
|
+
| `Random` | Self-closed | Random values |
|
|
724
|
+
| `Exit` | Self-closed | Stop rendering |
|
|
725
|
+
| `Catch` | Wrapping | Catch Exit output |
|
|
726
|
+
| `Switch` | Wrapping | Multi-branch |
|
|
727
|
+
| `When` | Self-closed | Switch branch |
|
|
728
|
+
| `Math` | Both | Arithmetic (module) |
|
|
729
|
+
| `Async` | Wrapping | Async loading (module) |
|
|
730
|
+
| `Cache` | Wrapping | Caching (module) |
|