wp-cli-fixtures/examples/fixtures.yml
Ian Jenkins 41e76d4667 Fix for parent category bug.
Due to an issue where tags could be used for a parent of a category, we
need to be able to set the taxonomy at construction time. This allows a
taxonomy to be passed for a term which works around the issue.

What we may want to consider to avoid confusion is to ditch the taxonomy
field altogether in favour of passing it through the constructor.
2021-06-15 15:47:34 +01:00

179 lines
5.2 KiB
YAML

#
# USERS
#
Hellonico\Fixtures\Entity\User:
user{1..10}:
user_login (unique): <username()> # '(unique)' is required
user_pass: 123456
user_email: <safeEmail()>
user_url: <url()>
user_registered: <dateTimeThisDecade()>
first_name: <firstName()>
last_name: <lastName()>
description: <sentence()>
role: <randomElement(['subscriber', 'editor'])>
meta:
phone_number: <phoneNumber()>
address: <streetAddress()>
zip: <postcode()>
city: <city()>
acf:
facebook_url: <url()>
twitter_url: <url()>
#
# ATTACHMENTS
#
Hellonico\Fixtures\Entity\Attachment:
default (template): # templates can be extended to keep things DRY
post_title: <words(2, true)>
post_date: <dateTimeThisDecade()>
post_content: <paragraphs(5, true)>
images{1..15} (extends default):
file: <image(<uploadDir()>, 1200, 1200, 'cats')> # <uploadDir()> is required, image() is the default faker provider and gets images from lorempixel.
pics{1..15} (extends default):
file: <picsum(<uploadDir()>, 1200, 1200)> # Alternatively we provide a picsum() provider which uses picsum for images. It's quicker but doesn't support image categories.
documents{1..2} (extends default):
file: <fileIn('relative/path/to/pdfs')>
custom_images{1..10} (extends default):
file: <fileIn('relative/path/to/images')>
#
# TERMS
#
Hellonico\Fixtures\Entity\Term:
category{1..10}:
name (unique): <words(2, true)> # '(unique)' is required
description: <sentence()>
parent: '50%? <termId(childless=1)>' # 50% of created categories will have a top level parent category
taxonomy: 'category' # could be skipped, default to 'category'
tag{1..40}:
__construct: ['post_tag'] # This is required to ensure the dynamic parent field above doesn't use tags as possible parents
name (unique): <words(2, true)> # '(unique)' is required
description: <sentence()>
taxonomy: post_tag
places{1..4}: # custom taxonomy
name (unique): <words(2, true)> # '(unique)' is required
description: <sentences(3, true)>
taxonomy: place
acf:
address: <streetAddress>
zip: <postcode()>
city: <city()>
image: '@custom_images*->ID'
#
# POSTS
#
Hellonico\Fixtures\Entity\Post:
# TEMPLATE
default (template):
post_title: <words(2, true)>
post_date: <dateTimeThisDecade()>
post_content: <paragraphs(5, true)>
post_excerpt: <paragraphs(1, true)>
meta:
_thumbnail_id: '@attachment*->ID'
# POSTS
post{1..30} (extends default):
# 'meta' and 'meta_input' are basically the same, you can use one or both,
# they will be merged, just don't provide the same keys in each definition
meta:
_thumbnail_id: '@attachment*->ID'
meta_input:
_extra_field: <paragraphs(1, true)>
post_category: '3x @category*->term_id' # post_category only accepts IDs
tax_input:
post_tag: '5x @tag*->term_id'
# post_tag: '5x <words(2, true)> # Or tags can be dynamically created
# PAGES
page{contact, privacy}:
post_title: <current()>
post_type: page
# CUSTOM POST TYPE
product{1..15}:
post_type: product
acf:
# number field
price: <numberBetween(10, 200)>
# gallery field
gallery: '3x @attachment*->ID'
# oembed field
video: https://www.youtube.com/watch?v=E90_aL870ao
# link field
link:
url: https://www.youtube.com/watch?v=E90_aL870ao
title: <words(2, true)>
target: _blank
# repeater field
features:
- label: <words(2, true)>
value: <sentence()
- label: <words(2, true)>
value: <sentence()>
- label: <words(2, true)>
value: <sentence()>
# layout field
blocks:
- acf_fc_layout: text_image
title: <words(4, true)>
content: <sentences(8, true)>
image: '@attachment*->ID'
- acf_fc_layout: image_image
image_left: '@attachment*->ID'
image_right: '@attachment*->ID'
#
# COMMENTS
#
Hellonico\Fixtures\Entity\Comment:
comment{1..50}:
comment_post_ID: '@post*->ID'
user_id: '@user*->ID'
comment_date: <dateTimeThisDecade()>
comment_author: <username()>
comment_author_email: <safeEmail()>
comment_author_url: <url()>
comment_content: <paragraphs(2, true)>
comment_agent: <userAgent()>
comment_author_IP: <ipv4()>
comment_approved: 1
comment_karma: <numberBetween(1, 100)>
# 'meta' and 'comment_meta' are basically the same, you can use one or both,
# they will be merged, just don't provide the same keys in each definition
comment_meta:
some_key: <sentence()>
meta:
another_key: <sentence()>
#
# NAV MENUS
#
Hellonico\Fixtures\Entity\NavMenu:
header:
name: header
locations:
- header
- footer
#
# NAV MENUS ITEMS
#
Hellonico\Fixtures\Entity\NavMenuItem:
custom_menu:
menu_item_url: <url()>
menu_item_title: <words(4, true)>
menu_id: '@header->term_id'
categories{1..3}:
menu_item_object: '@category*'
menu_id: '@header->term_id'
posts{1..3}:
menu_item_object: '@post*'
menu_id: '@header->term_id'
page:
menu_item_object: '@page*'
menu_id: '@header->term_id'