# What is Wordpress Bundle?

This package is a Symfony Bundle designed to use WordPress with Symfony.

{% hint style="info" %}
**How does it work ?** When the WordPress bundle is loaded, it includes the minimal amount of WordPress Core files to allow usage of WordPress functions and plugins inside Symfony.
{% endhint %}

> #### Blog Controller example for single page

```php
/**
 * src/Controller/BlogController.php
 *
 * @param Post $post
 * @param PostRepository $postRepository
 * @param BreadcrumbService $breadcrumbService
 * @return Response
 */
public function pageAction(Post $post, PostRepository $postRepository)
{
    $context = [];
    
    // get current post
    $context['post'] = $post;
    
    // find 10 "brands" ordered by title
    $context['brands'] = $postRepository->findBy(['post_type'=>'brand'], ['title'=>'ASC'], 10);

    return $this->render('page.html.twig', $context);
}
```

#### Twig template example for single page

```twig
{# templates/page.html.twig #}

{% extends 'layout.html.twig' %}

{% block body %}
<article id="post-{{ post.ID }}" class="{{ post.class }}">

    {% if post.thumbnail %}
        <img src="{{ post.thumbnail|resize(800, 600) }}" alt="{{ post.thumbnail.alt }}"/>
    {% endif %}

    <div class="entry-content">
        
        {{ post.content|raw }}
        
        {# or #}
        
        {% for block in post.blocks %}
            {% include 'block/'~block.name~'.html.twig' %}
        {% endfor %}
    </div>
    
    <small>{{ post.metafields.mention }}</small>
    
    {% for brand in brands %}
        {% include 'brand.html.twig' %}
    {% endfor %}

</article>
{% endblock body %}
```

## Demo

**Got 2 minutes?** Checkout the demo of our bundle

{% embed url="<https://github.com/wearemetabolism/wordpress-bundle-demo/tree/2.0.x>" %}

{% hint style="info" %}
This is an implementation of the Twenty Nineteen WordPress theme for wordpress-bundle.
{% endhint %}

## Feature list

<details>

<summary>Using Composer</summary>

* Install/update Wordpress via composer
* Install/update plugins via composer

</details>

<details>

<summary>Using Symfony</summary>

* Template engine
* Folder structure
* Http Cache
* Routing
* YML configuration
* DotEnv
* Enhanced Security ( Wordpress is 'hidden' )
* Dynamic image resize
* MVC

</details>

<details>

<summary>Using Wordpress Bundle</summary>

* Post/Term Repository
* Controller argument resolver for post(s), term and user
* Symfony Cache invalidation on update ( Varnish compatible )
* Post/Image/Menu/Term/User/Comment/Site/Block entity
* Wordpress predefined routes
* Site health checker url
* Static site export command

</details>

<details>

<summary>Using  WP Steroids Plugin</summary>

* Wordpress configuration using YML ( [view sample](https://github.com/wearemetabolism/wordpress-bundle/blob/2.0.x/config/wordpress.yaml) )
* Permalink configuration for custom post type and taxonomy
* Gutenberg editor resize
* Maintenance mode
* Backup download in dev mode
* Build hook
* Disabled automatic update
* Enhanced Security
* Better guid using RFC 4122 compliant UUID version 5
* Multisite images sync ( for multisite as multilanguage )
* SVG Support
* Better Performance
* Wordpress Bugfix
* CSS Fix
* Relative urls
* Multisite post deep copy ( with multisite-language-switcher plugin )
* Custom datatable support with view and delete actions in admin

</details>

## Getting started

Follow our handy guides to get started on the basics as quickly as possible:

{% content-ref url="getting-started/installation" %}
[installation](https://metabolism.gitbook.io/symfony-wordpress-bundle/getting-started/installation)
{% endcontent-ref %}

{% content-ref url="getting-started/wordpress" %}
[wordpress](https://metabolism.gitbook.io/symfony-wordpress-bundle/getting-started/wordpress)
{% endcontent-ref %}

{% content-ref url="getting-started/router" %}
[router](https://metabolism.gitbook.io/symfony-wordpress-bundle/getting-started/router)
{% endcontent-ref %}

{% content-ref url="getting-started/cron-job" %}
[cron-job](https://metabolism.gitbook.io/symfony-wordpress-bundle/getting-started/cron-job)
{% endcontent-ref %}

{% content-ref url="getting-started/templates" %}
[templates](https://metabolism.gitbook.io/symfony-wordpress-bundle/getting-started/templates)
{% endcontent-ref %}

## Fundamentals: Dive a little deeper

Learn the fundamentals of Wordpress Bundle to get a deeper understanding of our main features:

{% content-ref url="reference/argument-resolver" %}
[argument-resolver](https://metabolism.gitbook.io/symfony-wordpress-bundle/reference/argument-resolver)
{% endcontent-ref %}

{% content-ref url="reference/controller" %}
[controller](https://metabolism.gitbook.io/symfony-wordpress-bundle/reference/controller)
{% endcontent-ref %}

{% content-ref url="reference/entity" %}
[entity](https://metabolism.gitbook.io/symfony-wordpress-bundle/reference/entity)
{% endcontent-ref %}

{% content-ref url="reference/repository" %}
[repository](https://metabolism.gitbook.io/symfony-wordpress-bundle/reference/repository)
{% endcontent-ref %}

{% content-ref url="reference/service" %}
[service](https://metabolism.gitbook.io/symfony-wordpress-bundle/reference/service)
{% endcontent-ref %}

{% content-ref url="broken-reference" %}
[Broken link](https://metabolism.gitbook.io/symfony-wordpress-bundle/broken-reference)
{% endcontent-ref %}
