| | 1626 | * Expand a theme's starter content configuration using core-provided data. |
| | 1627 | * |
| | 1628 | * @since 4.7.0 |
| | 1629 | * |
| | 1630 | * @return array Array of starter content. |
| | 1631 | */ |
| | 1632 | function get_theme_starter_content() { |
| | 1633 | $config = get_theme_support( 'starter-content' ); |
| | 1634 | |
| | 1635 | if ( empty( $config ) ) { |
| | 1636 | return false; |
| | 1637 | } |
| | 1638 | |
| | 1639 | $core_content = array ( |
| | 1640 | 'sidebars_widgets' => array ( |
| | 1641 | 'text_business_info' => array ( 'text', array ( |
| | 1642 | 'title' => __( 'Find Us' ), |
| | 1643 | 'text' => join( '', array ( |
| | 1644 | '<p><strong>' . __( 'Address' ) . '</strong><br />', |
| | 1645 | __( '123 Main Street' ) . '<br />' . __( 'New York, NY 10001' ) . '</p>', |
| | 1646 | '<p><strong>' . __( 'Hours' ) . '</strong><br />', |
| | 1647 | __( 'Monday—Friday: 9:00AM–5:00PM' ) . '<br />' . __( 'Saturday & Sunday: 11:00AM–3:00PM' ) . '</p>' |
| | 1648 | ) ), |
| | 1649 | ) ), |
| | 1650 | 'search' => array ( 'search', array ( |
| | 1651 | 'title' => __( 'Site Search' ), |
| | 1652 | ) ), |
| | 1653 | 'text_credits' => array ( 'text', array ( |
| | 1654 | 'title' => __( 'Site Credits' ), |
| | 1655 | 'text' => sprintf( __( 'This site was created on %s' ), get_date_from_gmt( current_time( 'mysql', 1 ), 'c' ) ), |
| | 1656 | ) ), |
| | 1657 | ), |
| | 1658 | 'nav_menus' => array ( |
| | 1659 | 'link_yelp' => 'https://www.yelp.com', |
| | 1660 | 'link_facebook' => 'https://www.facebook.com/wordpress', |
| | 1661 | 'link_twitter' => 'https://twitter.com/wordpress', |
| | 1662 | 'link_instagram' => 'https://www.instagram.com/explore/tags/wordcamp/', |
| | 1663 | 'link_email' => 'mailto:wordpress@example.com', |
| | 1664 | ), |
| | 1665 | 'posts' => array( |
| | 1666 | 'home' => array( |
| | 1667 | 'post_type' => 'page', |
| | 1668 | 'post_title' => __( 'Homepage' ), |
| | 1669 | 'post_content' => __( 'Welcome home.' ), |
| | 1670 | ), |
| | 1671 | 'about-us' => array( |
| | 1672 | 'post_type' => 'page', |
| | 1673 | 'post_title' => __( 'About Us' ), |
| | 1674 | 'post_content' => __( 'More than you ever wanted to know.' ), |
| | 1675 | ), |
| | 1676 | 'contact-us' => array( |
| | 1677 | 'post_type' => 'page', |
| | 1678 | 'post_title' => __( 'Contact Us' ), |
| | 1679 | 'post_content' => __( 'Call us at 999-999-9999.' ), |
| | 1680 | ), |
| | 1681 | 'blog' => array( |
| | 1682 | 'post_type' => 'page', |
| | 1683 | 'post_title' => __( 'Blog' ), |
| | 1684 | ), |
| | 1685 | |
| | 1686 | 'homepage-section' => array( |
| | 1687 | 'post_type' => 'page', |
| | 1688 | 'post_title' => __( 'A homepage section' ), |
| | 1689 | 'post_content' => __( 'This is an example of a homepage section, which are managed in theme options.' ), |
| | 1690 | ), |
| | 1691 | ), |
| | 1692 | ); |
| | 1693 | |
| | 1694 | $content = array(); |
| | 1695 | |
| | 1696 | foreach ( $config as $type => $args ) { |
| | 1697 | switch( $type ) { |
| | 1698 | // Use options and theme_mods as-is |
| | 1699 | case 'options' : |
| | 1700 | case 'theme_modes' : |
| | 1701 | $content[ $type ] = $config[ $type ]; |
| | 1702 | break; |
| | 1703 | |
| | 1704 | // Widgets are an extra level down due to groupings |
| | 1705 | case 'sidebars_widgets' : |
| | 1706 | foreach( $config[ $type ] as $group => $items ) { |
| | 1707 | foreach ( $items as $id => $item ) { |
| | 1708 | $id = $item[1]; |
| | 1709 | if ( ! empty( $core_content[ $type ] && ! empty( $core_content[ $type ][ $id ] ) ) ) { |
| | 1710 | $content[ $type ][ $group ][ $id ][] = $item[0]; |
| | 1711 | $content[ $type ][ $group ][ $id ][] = $core_content[ $type ][ $id ]; |
| | 1712 | } |
| | 1713 | } |
| | 1714 | } |
| | 1715 | break; |
| | 1716 | |
| | 1717 | // And nav menus are yet another level down |
| | 1718 | case 'nav_menus' : |
| | 1719 | foreach( $config[ $type ] as $group => $args ) { |
| | 1720 | // Menu groups need a name |
| | 1721 | if ( empty( $args['name'] ) ) { |
| | 1722 | $args['name'] = $group; |
| | 1723 | } |
| | 1724 | |
| | 1725 | $content[ $type ][ $group ]['name'] = $args['name']; |
| | 1726 | |
| | 1727 | // Do we need to check if this is empty? |
| | 1728 | foreach ( $args['items'] as $id ) { |
| | 1729 | if ( ! empty( $core_content[ $type ] && ! empty( $core_content[ $type ][ $id ] ) ) ) { |
| | 1730 | $content[ $type ][ $group ]['items'][ $id ] = $core_content[ $type ][ $id ]; |
| | 1731 | } |
| | 1732 | } |
| | 1733 | } |
| | 1734 | break; |
| | 1735 | |
| | 1736 | |
| | 1737 | // Everything else should map at the next level |
| | 1738 | default : |
| | 1739 | foreach( $config[ $type ] as $id ) { |
| | 1740 | if ( ! empty( $core_content[ $type ] && ! empty( $core_content[ $type ][ $id ] ) ) ) { |
| | 1741 | $content[ $type ][ $id ] = $core_content[ $type ][ $id ]; |
| | 1742 | } |
| | 1743 | } |
| | 1744 | break; |
| | 1745 | } |
| | 1746 | } |
| | 1747 | |
| | 1748 | /** |
| | 1749 | * Filters the expanded array of starter content. |
| | 1750 | * |
| | 1751 | * @since 4.7.0 |
| | 1752 | * |
| | 1753 | * @param array $content Array of starter content. |
| | 1754 | * @param array $config Array of theme-specific starter content configuration. |
| | 1755 | */ |
| | 1756 | return apply_filters( 'get_theme_starter_content', $content, $config ); |
| | 1757 | } |
| | 1758 | |
| | 1759 | /** |