WordPressのスターターコンテンツ用スニペットメモ


WordPress4.7から使えるようになったスターターコンテンツ。
自力でカスタマイズすることもできるのですが、サンプルコードがあまり見当たらなかったので、自分用メモにしてたのアップします。

##投稿を設定する
### 固定ページを追加する
home / about / contact / blogの固定ページがそれぞれ存在しない場合、自動で生成する。
オプションを指定しない場合、コアに定義された規定のタイトルと本文だけが設定される。
（標準で定義されている固定ページはhome, about, contact, blog, news, homepage-sectionの6種類）

```php
    add_theme_support(
        'starter-content', [
        'posts' => [
            'home',
            'about',
            'contact',
            'blog',
        ],
    ]);
```

####Blog記事を１つ用意したい場合のサンプル

追加分のBlog記事については、カスタマイザー上ではプレビューできないが、適用後に反映される。

```php
    add_theme_support(
        'starter-content', [
        'posts' => [
            'custom' => [
                'post_type' => 'post',
                'post_title' => 'Hello, Dolly',
                'post_excerpt' => 'This is a example Starter Contnet Blog post.',
                'post_name' => 'example-blog-post',
                'post_content' => "Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
We feel the room swayin'
While the band's playin'
One of your old favourite songs from way back when
So, take her wrap, fellas
Find her an empty lap, fellas
Dolly'll never go away again
Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
We feel the room swayin'
While the band's playin'
One of your old favourite songs from way back when
Golly, gee, fellas
Find her a vacant knee, fellas
Dolly'll never go away
Dolly'll never go away
Dolly'll never go away again",
                'comment_status' => 'closed',
            ]
        ],
    ]);

```

##メディアファイルを設定する
###Aboutページにサムネイル画像を設定する

```php
add_theme_support( 'starter-content', array(
    'attachments' => array(
        'featured-image-logo' => array(
            'post_title' => 'Featured Logo',
            'post_content' => 'Attachment Description',
            'post_excerpt' => 'Attachment Caption',
            'file' => 'assets/images/featured-logo.jpg',
        ),
    ),
    'posts' => array(
        'about' => array(
            'thumbnail' => '{{featured-image-logo}}',
        ),
    ),
);
```

##フロントページを設定する

`options`でフロントページを設定できる。
`{{NAME}}`でNAMEに`posts`の値を入れることができる。

####`home``blog`の固定ページを作成して、固定フロントページはhome / Blogはblogに設定する
```php
    add_theme_support(
        'starter-content', [
        'options' => [
            'show_on_front' => 'page',
            'page_on_front' => '{{home}}',
            'page_for_posts' => '{{blog}}',
        ],
        'posts' => [
            'home',
            'blog'
        ],
    ]);

```

##ナビゲーションを設定する

```php
    add_theme_support(
        'starter-content', [
	     'nav_menus' => [
	            'sample_navigation' => [
	                'name' => __('Sample Navigation', 'id'),
	                'items' => [
	                  'home_link',
	                  'page_about',
						'custome_page' => [
							'title' => 'Contact Page',
							'url' => 'page_contact',
						],
						'custome_link' => [
							'title' => 'Sample',
							'url' => 'http://google.com',
						],
	                ],
	            ]
	     ],
    ]);

```

##ウィジェットを設定する

```php
add_theme_support(
  'starter-content', [
	'widgets' => [
		'home-content-top-widget-area' => [
			'search',
			'archives',
			'text_custom' => [
				'text',
				[
					'title' => 'Pre-hydrated text widget.',
					'text' => 'Sample'
				]
			],
			'meta_custom' => [
				'meta',
				[
					'title' => 'Pre-hydrated meta widget.',
				]
			],
		],
	],
  ]
);
```

##プラグインで追加されたウィジェットを設定する(VK_Profile)

```
// Plugin widget added using filters
function myprefix_starter_content_add_widget( $content, $config ) {
    if ( isset( $content['widgets']['home-content-top-widget-area'] ) ) {
	    $content['widgets']['front-side-top-widget-area']['b_custom_widget'] = array(
			'wp_widget_vkexunit_profile', array(
				'label' => 'Sample profile widget',
				'facebook' => 'http://facebook.com',
				'profile' => 'profile content'
			),
		);
    }
    return $content;
}
add_filter( 'get_theme_starter_content', 'myprefix_starter_content_add_widget', 10, 2 );
```