TransWikia.com

Abrir POST em arquivo php

Stack Overflow em Português Asked by Philip Vanstocher on November 19, 2021

Por padrão sei que posso listar alguns artigos wordpress em uma página externa em php usando um “require(‘../../wp-blog-header.php’);”.

Porém ao clicar em um desses artigos ele vai para página padrão que abre o Post completo.

Minha dúvida é a seguinte:

Como faço para que o POSt completo seja aberto em um arquivo (Ex. Postcompleto.php”) separado, ao invés de abrir na single.php ?

One Answer

Você pode usar o método de incluir require('../../wp-blog-header.php'); para carregar qualquer conteúdo. O que muda é a forma como você chama o conteúdo dentro do seu arquivo externo.

Por padrão quando você incluir wp-blog-header.php ele vai carregar todo o back-end do WordPress com os parâmetros básicos, ou seja, ele carrega a página inicial. Daí pra frente ele vai obedecer o que estiver no seu arquivo, então você pode criar uma segunda query pra pegar o conteúdo que te interessa:

// Pra buscar um arquivo de posts do tipo "artigos"
$query = new WP_Query( array( 'post_type' => 'artigos' /* etc */ ) );
if ( $query->has_posts() ) : 
    while ( $query->has_posts() ) : 
        $query->the_post();
        // exibe as informações aqui
    endwhile;
endif;

-

// Pra buscar um post pelo ID
$single = get_post( $id );
echo $single->post_title; // imprime o título

Agora, pra lincar de dentro do seu arquivo de posts para o php externo você provavelmente vai ter que filtrar as URLs que estão sendo exibidas. Algo assim é um caminho, mas existem outros dependendo do seu caso específico:

// em functions.php
add_filter( 'post_link', 'altera_link' ); // posts
add_filter( 'page_link', 'altera_link' ); // pages
add_filter( 'post_type_link', 'altera_link' ); // custom post types
function altera_link( $link ) {
    // altera os links de 'example.com' para 'domain.com';
    return str_replace( 'example.com', 'domain.com', $link );
}

mas: carregar wp-blog-header.php em geral é má ideia.

Eu pensaria bem na arquitetura desse sistema porque existem jeitos melhores de não usar o sistema de templates do WP, se esse é o caso. Existem wrappers pra frameworks PHP (tipo Corcel), ou mesmo pra front-ends em javascript (tipo NodeifyWP) e existe o bom e velho Ajax pra puxar só o conteúdo que você quer.

Answered by Ricardo Moraleida on November 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP