Múltiplas áreas de conteúdo por página

4

Estou com um problema de conteúdo complexo. Cada página pode ter várias seções (número desconhecido), cada seção pode ter vários contêineres, cada contêiner pode ter vários blocos de conteúdo (1, 2 ou 3).

Atualmente, tenho uma solução teórica com códigos de acesso, mas gostaria de resolver isso com a interface do usuário, se possível, fornecendo editores wysiwyg para cada bloco de conteúdo.

Seções: Pode haver qualquer número de seções (um máximo realista / aceitável seria 10). Contêineres: Uma seção pode conter qualquer número de linhas (um máximo realista / aceitável seria 5). Contêineres: uma linha precisa saber quantas colunas precisa conter. Blocos de conteúdo: uma linha pode conter 1, 2 ou 3 colunas.

A solução de shortcode parece algo assim:

[section id="summary"] //id is required but can be anything (no spaces)
   [container blocks="1"] //row can have 1, 2 or 3 columns
      [block]
      .content-block
      [/block]
   [/container]
[/section]
[section id="find us"] //id is required but can be anything (no spaces)
   [container blocks="3"] //row can have 1, 2 or 3 columns
      [block]
      .content-block
      [/block]
      [block]
      .content-block
      [/block]
      [block]
      .content-block
      [/block]
   [/container]
[/section]
[section id="team"] //id is required but can be anything (no spaces)
   [container blocks="2"] //row can have 1, 2 or 3 columns
      [block]
      .content-block
      [/block]
      [block]
      .content-block
      [/block]
   [/container]
[/section]

Alguém tem alguma sugestão sobre como posso fazer isso?

Obrigado Josh

    
por Josh 02.10.2016 / 14:25

2 respostas

3

Isso soa como um uso perfeito do recurso Campos personalizados avançados "conteúdo flexível" para mim. Os campos de conteúdo flexível permitem definir vários layouts e, em seguida, adicioná-los a uma página ou postar um por um, em qualquer ordem ou combinação de que você precisar. Cada layout pode ser uma combinação de campos de texto, imagens, editores wysiwyg e outros tipos de campos.

É uma interface brilhante no lado do cliente e fácil de criar um front-end personalizado no seu modelo, assim que você pegar o jeito.

É um plugin premium, mas eu venho criando esses tipos de interfaces há muitos anos e funciona muito bem. Eu não encontrei mais nada parecido com isso.

    
por Dalton 04.10.2016 / 21:56
1

É mais fácil codificar o Editor Visual para que os editores de conteúdo possam destacar partes do conteúdo da postagem, em vez de tentar adicionar um grande número de blocos de conteúdo extra à tela de edição.

Aqui está o que eu uso, o básico do qual eu acho que recebi do Codex originalmente, há muito tempo.

// Callback function to insert 'styleselect' into the $buttons array
function wpse241267_mce_buttons_2( $buttons ) {
    array_unshift( $buttons, 'styleselect' );
    return $buttons;
}

add_filter('mce_buttons_2', 'wpse241267_mce_buttons_2');

Isto apenas ativa o menu suspenso Estilo no lado esquerdo da segunda linha dos botões do Editor Visual.

Agora para a carne:

function wpse241267_mce_insert_formats( $init_array ) {  

    $style_formats = array(  
        // Each array child is a format with its own settings

        array(  
            'title' => 'Find Us Block',  
            'block' => 'div',  
            'classes' => 'find-us',
            'wrapper' => true,
            'exact' => true,

        ),
    );  

    // Insert the array, JSON ENCODED, into 'style_formats'

    $init_array['style_formats'] = json_encode( $style_formats );  

    return $init_array;  

} 

add_filter( 'tiny_mce_before_init', 'wpse241267_mce_insert_formats' );

Você pode usar IDs em vez de classes, se quiser, mas não há nada que impeça que um usuário adicione mais de um em uma página.

Em seguida, no Editor Visual, você pode destacar algum conteúdo, aplicar esse estilo no menu suspenso e o conteúdo destacado será cercado por um div com a classe find-us .

O argumento exact impede o editor de mesclar vários blocos adjacentes. Dependendo do seu caso, você pode querer remover isso.

    
por Andy Macaulay-Brook 02.10.2016 / 17:47