Restituisce la pagina modello HTML con funzione PHP


10

Voglio creare un modulo che posso usare un shortcode per inserire nel mio sito.

Sarebbe davvero bello se potessi creare la parte HTML in un file separato e quindi inserirla con uno shortcode PHP (per separare la logica della pagina dalla meccanica di trasformarla in uno shortcode).

Come potrei farlo?

-- Aggiornare --

Questo è quello che ho fatto: ho due file. Uno chiamato 'profiletemplate.php' e uno chiamato 'scodes'. Fanno entrambi parte di un plugin che sto realizzando per il mio sito con un init.php che li inizializza. Ecco il loro contenuto:

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>

Quindi uso lo shortcode [testfield] su una pagina del mio sito.

Aggiornamento 2

Quindi questo metodo funziona, ma non sta inserendo l'HTML dove viene chiamato lo shortcode. Invece sta semplicemente inserendo il contenuto nella parte superiore della pagina (come se dicessi 'echo' Testing '' invece di 'return' Testing '' in una funzione.


Bene, per cominciare, PUOI scrivere un semplice HTML in un file PHP. Devi quindi scrivere una funzione nel tuo functions.phpche richiede / include questo certo file e, tramite l' add_shortcode()impostazione del tuo shortcode desiderato, per chiamare la tua funzione.
martedì

Risposte:


24

Qualcosa che ho dimenticato nel mio commento precedente è stato che i codici brevi restituiscono il contenuto, sia l' includealternativa suggerita che la mia alternativa get_template_partprodurranno direttamente il contenuto (che è quello che stai vedendo con il contenuto che appare nella parte superiore della tua pagina invece di dove viene chiamato il codice breve). Per contrastare questo dobbiamo usare il buffering dell'output .

Definisci lo shortcode nel tuo function.php (o nel file delle funzioni specifiche del tuo sito ).

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

Quindi nella cartella del tema è necessario un file chiamato my_form_template.phpche verrà caricato ovunque si inserisca lo shortcode.


Perfetto! Funziona a meraviglia!
William,

Se provi a fare lo stesso con un plugin devi usare include. Vedi wordpress.stackexchange.com/a/124794/75817
patrics

Wow ... mi ha salvato la giornata ... fantastico codice
dipak_pusti il

2

Aggiungi quanto segue a 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' );

File my_form_template.php :

<?php // Template for my form shortcode ?>
<form ...>
    FIELDS
</form>

1
Puoi anche usare la get_template_part()tua funzione shortcode.
Helgatheviking

Ho provato a implementare la soluzione di @ tf - ho aggiunto un aggiornamento al mio post al riguardo
William

@helgatheviking - come funziona quella funzione?
William,

Vedi il codice per una descrizione di get_template_part () e vedi la mia risposta su come usarlo insieme al tuo shortcode.
Helgatheviking
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.