Activating

Blockstudio can be activated on a site by navigating to the Blockstudio menu item in the WordPress admin dashboard.

Alternatively, it is also possible to activate Blockstudio using PHP. This is done by adding the following code constant to your functions.php file:

functions.php
const BLOCKSTUDIO_LICENSE = "YOUR LICENSE KEY";
Copy
× Close

Menu

× Close

Search

  • /activating
  • /assets
    • code-field
        #basic-usage

        My block

        My block

        #scoped-selector
        #example

        My block

        #automatic-rendering
        #in-extensions
        #example-1
    • processing
        #minification
        #scss
        #import-paths
        #es-modules
        #setup
        #caveats
        #version
        #same-modules
        #css-loader
    • registering
        #inline
        #scoped
        ">

        Scope me!

        Scope me too!

        h1 { color: red; } The above will result in the following scoped style: <div class="bs-62df71e6cc9a"> <h1>Scope me!</h1> <p>Scope me too!</p> </div>

        #global
        #admin
        #block-editor
        #per-block
        my slider
        my slider

  • /attributes
    • block-attributes
        #rendering

        The block is aligned:

        The block is aligned:

        The block is aligned: {{ block.align }}

        The block is aligned: {{ b.align }}

        #defaults
    • conditional-logic
        #operators
        #global
        #custom
        #block
        #repeater
    • disabling
    • field-types
    • filtering
        #in-editor
        #on-frontend
    • html-utilities
        #data-attributes

        >

        {{ a.message }}

        The bs_render_attributes function will render the attributes as data attributes on the element.

        Hello

        The bs_render_attributes function accepts a second parameter to specify the attributes to render. If no attributes are specified, all attributes will be rendered.

        >

        {{ a.message }}

        The above example will render the following HTML:

        Hello

        If you don't want to render the output, simply use the bs_attributes function.

        #css-variables

        {{ a.message }}

        Hello

        Similarly, the bs_render_variables function accepts a second parameter to specify the attributes to render. If no attributes are specified, all attributes will be rendered.

        {{ a.message }}

        The above example will render the following HTML:

        Hello

        If you don't want to render the output, simply use the bs_variables function.

        #string-conversion
    • populating-options
        #query
        #arguments
        #return-format
        #fetch
        #function
        #arguments-1
        #return-format-1
        #mixing
        #custom-data
        #external-data
    • registering
    • rendering

      {{ attributes.message }}

      {{ a.message }}

      Attribute values render false if the field is empty or no option has been selected.

      {{ a.message }}

  • /code-snippets
    • #setup
    • #styles-and-scripts
    • #custom-directories
  • /components
    • innerblocks
        #basic-usage
        #allowedblocks
        #tag
        #template
        #templatelock
        #renderappender
        #useblockprops
        #registering
        #templates

        {{ container['full-width'] ? 'is full width' : 'no full width' }}

        #frontend-wrapper
        #return-early
        #dynamic-templates
    • mediaplaceholder
        #basic-usage
        #accept
        #allowedtypes
        #autoopenmediaupload
        #disabledropzone
        #dropzoneuionly
        #icon
        #isappender
        #disablemediabuttons
        #labels
    • richtext
        #basic-usage
        #allowedformats
        #placeholder
        #preservewhitespace
        #tag
        #withoutinteractiveformatting
    • useblockprops
        #usage
        Blockstudio will automatically combine classes and attributes from the editor (alignment classes etc.) along with whatever is defined in the block templates. get_block_wrapper_attributes is being used under the hood for that.

        #root-element
        First root element.
        Second root element. Similarly, useBlockProps can only be used once per block template.

        #-sign
  • /composer
    • #env
    • #composer-json
  • /context

    This is the data of current element inside the loop:

    This is the data the current post:

    This is the data of current element inside the loop: {{ block.context.postId }} {{ block.context.postType }}

    This is the data the current post: {{ block.postId }} {{ block.postType }}

  • /editor
    • examples
        #usage
        #select
        #images
    • general
        #architecture
        #safety
        #setup
        #preview-assets
        #outlook
    • gutenberg
        #limitations
    • tailwind
        #setup
        #how-does-it-work
        #recompiling
  • /environment
    • #editor
    • #preview
  • /extensions
    • #extension-types
    • #setup
    • #file-name
    • #schema
    • #name
    • #blockstudio-key
    • #position
    • #priority
    • #attributes
    • #getting-values
    • #arrays
    • #attributes-field
  • /general
    • #introduction
    • #core-focused
    • #server-side-first
    • #file-system-based
    • #no-setup
  • /hooks
    • javascript
        #refresh
        #loaded
        #rendered
        #update
        #example
        #with-key
    • php
        #path
        #global
        #instance
        #global-before
        #global-before-instance
        #render
        #meta
        #conditions
        #attributes
        #attributes-render
        #attributes-populate
        #components-useblockprops-render
        #components-innerblocks-render
        #components-innerblocks-frontend-wrap
        #components-richtext-render
        #path-1
        #enable
        #process-scss-importpaths
        #process-css-content
        #process-js-content
        #global-1
        #head
        #footer
  • /initialization
  • /library
  • /loading
    • #disabling
  • /overrides
    • #block-json
    • #attributes
    • #complex-structures
    • #assets
    • #rendering-template
    • #twig-blocks

      Images:

      Instead of replacing the whole template, we can use Twigs extends feature to override certain parts of the template while keeping the rest intact. {% block image %} <figure> <img src="{{ image.url }}" class="image" /> <figcaption>{{ image.caption }}</figcaption> </figure> {% endblock %}

  • /post-meta
    • #getting-post-meta
    • #acf
    • #metabox
    • #refreshing-blocks
  • /preview
    • #custom-data

      {{ a.title }}

    • #innerblocks
  • /registration
    • #block-json
    • #template

      My first native block.

    • #twig
    • #conditional-logic
    • #custom-icon
    • #html
      :-)
      " } }

    • #custom-paths
    • #filter
    • #instances
    • #filter-metadata
  • /rendering
    • #without-data
    • #with-data
    • #nesting

      echo bs_block([ 'id' => 'blockstudio/cta', 'data' => [ 'title' => 'My title', 'subtitle' => 'My subtitle', ], 'content' => bs_block([ 'id' => 'blockstudio/cta', 'data' => [ 'text' => 'Button Text', ], ]) ]); The button block will be rendered in place of the $content variable inside the block template.

    • #multiple-slots

      echo bs_block([ 'id' => 'blockstudio/cta', 'data' => [ 'title' => 'My title', 'subtitle' => 'My subtitle', ], 'content' => [ 'beforeContent' => bs_block([ 'id' => 'blockstudio/badge', 'data' => ['text' => 'Before Content'], ]), 'afterContent' => bs_block([ 'id' => 'blockstudio/cta', 'data' => ['text' => 'Button Text'], ]) ] ]);

  • /schema
    • #add-to-json
  • /settings
    • #json
    • #filters
    • #admin
  • /transforms
    • #block-to-block
    • #enter
    • #prefix
  • /variations
    • #hiding-attributes
× Close

Navigation

× Close

Search

  • /activating
  • /assets
    • code-field
        #basic-usage

        My block

        My block

        #scoped-selector
        #example

        My block

        #automatic-rendering
        #in-extensions
        #example-1
    • processing
        #minification
        #scss
        #import-paths
        #es-modules
        #setup
        #caveats
        #version
        #same-modules
        #css-loader
    • registering
        #inline
        #scoped
        ">

        Scope me!

        Scope me too!

        h1 { color: red; } The above will result in the following scoped style: <div class="bs-62df71e6cc9a"> <h1>Scope me!</h1> <p>Scope me too!</p> </div>

        #global
        #admin
        #block-editor
        #per-block
        my slider
        my slider

  • /attributes
    • block-attributes
        #rendering

        The block is aligned:

        The block is aligned:

        The block is aligned: {{ block.align }}

        The block is aligned: {{ b.align }}

        #defaults
    • conditional-logic
        #operators
        #global
        #custom
        #block
        #repeater
    • disabling
    • field-types
    • filtering
        #in-editor
        #on-frontend
    • html-utilities
        #data-attributes

        >

        {{ a.message }}

        The bs_render_attributes function will render the attributes as data attributes on the element.

        Hello

        The bs_render_attributes function accepts a second parameter to specify the attributes to render. If no attributes are specified, all attributes will be rendered.

        >

        {{ a.message }}

        The above example will render the following HTML:

        Hello

        If you don't want to render the output, simply use the bs_attributes function.

        #css-variables

        {{ a.message }}

        Hello

        Similarly, the bs_render_variables function accepts a second parameter to specify the attributes to render. If no attributes are specified, all attributes will be rendered.

        {{ a.message }}

        The above example will render the following HTML:

        Hello

        If you don't want to render the output, simply use the bs_variables function.

        #string-conversion
    • populating-options
        #query
        #arguments
        #return-format
        #fetch
        #function
        #arguments-1
        #return-format-1
        #mixing
        #custom-data
        #external-data
    • registering
    • rendering

      {{ attributes.message }}

      {{ a.message }}

      Attribute values render false if the field is empty or no option has been selected.

      {{ a.message }}

  • /code-snippets
    • #setup
    • #styles-and-scripts
    • #custom-directories
  • /components
    • innerblocks
        #basic-usage
        #allowedblocks
        #tag
        #template
        #templatelock
        #renderappender
        #useblockprops
        #registering
        #templates

        {{ container['full-width'] ? 'is full width' : 'no full width' }}

        #frontend-wrapper
        #return-early
        #dynamic-templates
    • mediaplaceholder
        #basic-usage
        #accept
        #allowedtypes
        #autoopenmediaupload
        #disabledropzone
        #dropzoneuionly
        #icon
        #isappender
        #disablemediabuttons
        #labels
    • richtext
        #basic-usage
        #allowedformats
        #placeholder
        #preservewhitespace
        #tag
        #withoutinteractiveformatting
    • useblockprops
        #usage
        Blockstudio will automatically combine classes and attributes from the editor (alignment classes etc.) along with whatever is defined in the block templates. get_block_wrapper_attributes is being used under the hood for that.

        #root-element
        First root element.
        Second root element. Similarly, useBlockProps can only be used once per block template.

        #-sign
  • /composer
    • #env
    • #composer-json
  • /context

    This is the data of current element inside the loop:

    This is the data the current post:

    This is the data of current element inside the loop: {{ block.context.postId }} {{ block.context.postType }}

    This is the data the current post: {{ block.postId }} {{ block.postType }}

  • /editor
    • examples
        #usage
        #select
        #images
    • general
        #architecture
        #safety
        #setup
        #preview-assets
        #outlook
    • gutenberg
        #limitations
    • tailwind
        #setup
        #how-does-it-work
        #recompiling
  • /environment
    • #editor
    • #preview
  • /extensions
    • #extension-types
    • #setup
    • #file-name
    • #schema
    • #name
    • #blockstudio-key
    • #position
    • #priority
    • #attributes
    • #getting-values
    • #arrays
    • #attributes-field
  • /general
    • #introduction
    • #core-focused
    • #server-side-first
    • #file-system-based
    • #no-setup
  • /hooks
    • javascript
        #refresh
        #loaded
        #rendered
        #update
        #example
        #with-key
    • php
        #path
        #global
        #instance
        #global-before
        #global-before-instance
        #render
        #meta
        #conditions
        #attributes
        #attributes-render
        #attributes-populate
        #components-useblockprops-render
        #components-innerblocks-render
        #components-innerblocks-frontend-wrap
        #components-richtext-render
        #path-1
        #enable
        #process-scss-importpaths
        #process-css-content
        #process-js-content
        #global-1
        #head
        #footer
  • /initialization
  • /library
  • /loading
    • #disabling
  • /overrides
    • #block-json
    • #attributes
    • #complex-structures
    • #assets
    • #rendering-template
    • #twig-blocks

      Images:

      Instead of replacing the whole template, we can use Twigs extends feature to override certain parts of the template while keeping the rest intact. {% block image %} <figure> <img src="{{ image.url }}" class="image" /> <figcaption>{{ image.caption }}</figcaption> </figure> {% endblock %}

  • /post-meta
    • #getting-post-meta
    • #acf
    • #metabox
    • #refreshing-blocks
  • /preview
    • #custom-data

      {{ a.title }}

    • #innerblocks
  • /registration
    • #block-json
    • #template

      My first native block.

    • #twig
    • #conditional-logic
    • #custom-icon
    • #html
      :-)
      " } }

    • #custom-paths
    • #filter
    • #instances
    • #filter-metadata
  • /rendering
    • #without-data
    • #with-data
    • #nesting

      echo bs_block([ 'id' => 'blockstudio/cta', 'data' => [ 'title' => 'My title', 'subtitle' => 'My subtitle', ], 'content' => bs_block([ 'id' => 'blockstudio/cta', 'data' => [ 'text' => 'Button Text', ], ]) ]); The button block will be rendered in place of the $content variable inside the block template.

    • #multiple-slots

      echo bs_block([ 'id' => 'blockstudio/cta', 'data' => [ 'title' => 'My title', 'subtitle' => 'My subtitle', ], 'content' => [ 'beforeContent' => bs_block([ 'id' => 'blockstudio/badge', 'data' => ['text' => 'Before Content'], ]), 'afterContent' => bs_block([ 'id' => 'blockstudio/cta', 'data' => ['text' => 'Button Text'], ]) ] ]);

  • /schema
    • #add-to-json
  • /settings
    • #json
    • #filters
    • #admin
  • /transforms
    • #block-to-block
    • #enter
    • #prefix
  • /variations
    • #hiding-attributes