Retornar página de modelo HTML com função PHP

10

Quero criar um formulário que possa usar um código curto 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 código de acesso PHP (para separar a lógica da página da mecânica de transformá-la em um código de acesso).

Como eu pude fazer isso?

- Atualização -

Foi o que fiz: tenho dois arquivos. Um chamado 'profiletemplate.php' e outro chamado 'scodes'. Ambos fazem parte de um plugin que estou criando 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>

Depois, 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 onde o código de acesso é chamado. Em vez disso, basta inserir o conteúdo na parte superior da página (como se eu dissesse 'echo' Testing '' em vez de 'return' Testing '' em uma função.

William
fonte
Bem, para iniciantes, você PODE escrever HTML simples em um arquivo PHP. Você precisa escrever uma função no seu functions.phparquivo que exija / inclua esse arquivo e, por meio da add_shortcode()configuração do código de acesso desejado, para chamar sua função.
precisa saber é o seguinte

Respostas:

24

Algo que esqueci no meu comentário anterior foi que os códigos de acesso retornam conteúdo, tanto a sugestão includequanto a minha alternativa get_template_partproduzirão diretamente o conteúdo (que é o que você está vendo com o conteúdo aparecendo na parte superior da página, em vez de onde o código de acesso é chamado). Para combater isso, devemos usar o buffer de saída .

Defina o código abreviado no seu functions.php (ou no arquivo de 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' );

Então, na sua pasta de temas, você precisa de um arquivo chamado, my_form_template.phpque será carregado em qualquer lugar em que você colocar o código de acesso.

helgatheviking
fonte
Perfeito! Isso funciona fabulosamente!
William
Se você tentar fazer o mesmo em um plug-in, precisará usar o include. Veja wordpress.stackexchange.com/a/124794/75817
patrics
Wow ... salvou meu código day..awesome
dipak_pusti
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>
tfrommen
fonte
11
Você também pode usar get_template_part()dentro da sua função shortcode.
precisa saber é o seguinte
Eu tentei implementar a solução do @ tf - eu adicionei uma atualização ao meu post sobre isso #
William
@helgatheviking - como essa função funciona?
William
Veja o codex para obter uma descrição de get_template_part () e veja minha resposta sobre como usá-lo em conjunto com seu código de acesso.
8133 helgatheviking