2014-08-08 10 views
5

Quello che sto cercando di fare è convertire il mio design di una pagina in wordpress e ho pensato che sarebbe stato bello poter modificare, aggiungere e modificare diverse parti della pagina in pagine separate . Il sito web di una pagina sarà ordinato da un menu (con ID principale).Problema di wordpress a una pagina con get_template_part e get_footer

Dopo la wp-codex ho usato get_template_part, dovrebbe funzionare correttamente perché dovrebbe:

Caricare una parte di modello in un modello (diverso da intestazione, sidebar, piè di pagina)

get_header viene saltato ma viene eseguito get_footer e il sito viene visualizzato in modo errato.


front-page.php

$pages = wp_get_nav_menu_items('main'); 
global $post; 
foreach ($pages as $post) { 
    $post = get_post($post->object_id); 
    if($post->post_type != "page") continue; 
    setup_postdata($post); 
    $postName = (locate_template('page-' . $post->post_name . '.php') == '') ? null : $post->post_name; 
    get_template_part('page', $postName); 
} 
wp_reset_postdata(); 

Si tratta di un bug? O ho fatto qualcosa di sbagliato? Qual è il modo migliore per farlo?

+2

Quali sono i contenuti della "parte" 'modello page.php'? I modelli di pagina di WordPress predefiniti per tutto il tempo che posso ricordare hanno incluso intestazione, piè di pagina e anche barra laterale, quindi non è realmente un modello "parziale" o parziale, ma piuttosto l'intera cosa. Direi rotolare la tua parte, senza chiamare 'get_header',' get_footer', ecc. –

+2

Sono d'accordo con @tbuteler, crea la tua parte template predefinita, invece di usare 'page.php', che di solito contiene' get_ { testa, piè di pagina}() '. Inoltre non userei 'page- {slug} .php', perché è usato da WordPress per sovrascrivere il template per quella particolare pagina. Vorrei usare per esempio 'onepage- {slug} .php'. Prova ad esempio: 'if (! Is_null ($ postName)) get_template_part ('page', $ postName);' per verificare se il layout è reso correttamente. – birgire

+1

Ah, quindi l'ho interpretato in modo errato. Nella mia (vecchia) comprensione wordpress salta le funzioni 'get_header',' get_footer' e 'get_sidebar' ma ciò che effettivamente richiede è un modello senza queste funzioni. – Ties

risposta

0

Ho finito per copiare la pagina predefinita.modello di PHP come page-page.php e caricato in questo modo:

$postName = (locate_template('page-' . $post->post_name . '.php') == '') ? 'page' : $post->post_name; 

Poi nel page.php appena caricato page-page.php

0

se il tuo get_template_part() non funziona, allora il problema potrebbe essere che non ci sono file chiamati come page.php nel tema, controlla questo file.

+0

Ho un modello di pagina, lo uso come fallback se non esiste un modello personalizzato per la pagina specifica. Il 'get_footer' in page.php -o page- {slug} .php- viene eseguito non in front-page.php. Voglio questo in senso contrario. – Ties

+0

controlla le tue impostazioni> lettura, se hai cambiato opitone – sprytechies

+0

è possibile controllare se non è possibile caricare il file –

0

Per quello che vale, salti spesso alcuni helper del WP e lavoro più direttamente, ma non canaglia. Ecco un frammento dalla mia biblioteca:

/** Get core data for a WP post/page using ID 
* @param $id : wp post/page ID 
* @return array 
*/ 
function wp_get_single_post_basic($id){ 
    $post = get_post($id, ARRAY_A); 
    $ret = array(); 
    $content = $post['post_content']; 
    // FILTER via WP 
    $content = apply_filters('the_content', $post['post_content']); 
    $ret['title']= $post['post_title'];; 
    $ret['content']= $content; 
    $ret['link'] = $post['post_name']; 
    $ret['edit_link'] = '<a href="'.get_edit_post_link($id).'" title="edit">edit</a>'; 
    return $ret; 
} 

Tale funzione si rompe il contenuto di una molto facile da gestire modalità e genera il link modifica (build bool per quella nel chiamare script). Formatta anche il contenuto.

Quindi prendi e ordina gli ID che desideri ed esegui questo in loop su ID per la tua pagina. Quindi tutto il contenuto sarà isolato per pagina/post/qualunque (tassonomia personalizzata FTW).

Se gli ID erano pronti e ordinati più l'html/css pronto per andare, potrei rilasciare questa funzione e completare la tua pagina in meno di un'ora. Per le linee di produzione questo tipo di aiuto è ottimo - perfetto anche per i siti in cui si desidera posizionare un post/pagina specifico in qualche modo strano in qualche luogo strano fuori dal loop.

Se hai un problema w/script fatemi sapere, io non l'ho usato in pochi mesi, ha scritto un paio di anni fa ...

0

io pensi di avere un problema con il globale e $post memorizzando anche la variabile $post nel ciclo foreach dagli oggetti del menu. Penso che probabilmente questa sia la causa dell'errore con la chiamata di parte modello.

ti consiglierei di rimuovere il $post dichiarazione globale, il reset_postdata e anche il setup_postdata dal momento che non si utilizza il globale nel vostro ciclo, sei solo nominarlo.

Stai diventando l'oggetto $post dal menu così sembra che non è necessario il globale o le altre funzioni che sono per lo più utilizzati quando si desidera utilizzare "Style Loop" tag modello senza post_id, come the_permalink() oppure the_title().

Problemi correlati