Retorna a Página de Modelo HTML com Função PHP

8

Eu quero criar um formulário que eu possa usar um shortcode para inserir no meu site.

Seria muito bom se eu pudesse criar a parte HTML em um arquivo separado e depois inseri-la com um shortcode PHP (para separar a lógica da página da mecânica de torná-la um shortcode).

Como eu poderia fazer isso?

- Atualização -

Isso é o que eu fiz: Eu tenho dois arquivos. Um chamado 'profiletemplate.php' e um chamado 'scodes'. Ambos são parte de um plugin que estou fazendo para o meu site com um init.php que os inicializa. Aqui está o conteúdo deles:

init.php

<?php
require_once(dirname(__FILE__).'/pages/scodes.php');
?>

scodes.php

function jf_testcode() {
    include dirname(__FILE__) . 'profiletemplate.php';
}

add_shortcode('testfield', 'jf_testcode');

profiletemplate.php

<?php // Template for my form shortcode ?>
<form>
Testing
</form>

Em seguida, uso o código de acesso [testfield] em uma página do meu site.

Atualização 2

Portanto, esse método está funcionando, mas não está inserindo o HTML no qual o shortcode é chamado. Em vez disso, é apenas inserir o conteúdo no topo da página (como se eu dissesse 'echo' Testando '' em vez de 'retornar' Testando '' em uma função.

    
por William 08.03.2013 / 14:07

2 respostas

16

Algo que eu esqueci no meu comentário anterior foi que os códigos de acesso retornam conteúdo, tanto o sugerido include quanto a minha alternativa get_template_part exibirá diretamente o conteúdo (que é o que você está vendo com o conteúdo exibido na parte superior da página, em vez de onde o código de acesso é chamado). Para compensar isso, devemos usar o buffer de saída .

Defina o shortcode em seu functions.php (ou funções específicas do site .

function my_form_shortcode() {
    ob_start();
    get_template_part('my_form_template');
    return ob_get_clean();   
} 
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );

Em seguida, na pasta do seu tema, você precisa de um arquivo chamado my_form_template.php , que será carregado em qualquer lugar em que você inserir o shortcode.

    
por helgatheviking 08.03.2013 / 16:12
2

Adicione o seguinte ao seu functions.php :

function my_form_shortcode() {
    include dirname( __FILE__ ) . 'my_form_template.php';
} // function my_form_shortcode
add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );

Arquivo my_form_template.php :

<?php // Template for my form shortcode ?>
<form ...>
    FIELDS
</form>
    
por tfrommen 08.03.2013 / 14:18