marlon@universowp.com.br
Iniciar e carregar o WP
Analisa a URL e define quais posts deverão ser buscados no banco de dados
Buscar no banco de dados os posts requisitados para serem exibidos
https://universowp.com.br/categoria/noticias
Escolher e carregar o template a ser usado para exibir os posts através do Loop
https://universowp.com.br/categoria/noticias
A URL requisitada será analisada para extrair as variáveis (query_vars) que serão usadas como parâmetros para fazer a busca dos posts
https://universowp.com.br/categoria/noticias
https://universowp.com.br/index.php?category_name=noticias
query_vars -> Array (
category_name => 'noticias',
)
categoria/(.+?)/?$
index.php?category_name=$matches[1]
https://universowp.com.br/categoria/noticias
index.php?category_name=noticias
Query Vars são variáveis extraídas da URL ou usadas numa query customizada que determinam (ou afetam) os resultados de uma consulta ao banco de dados.
query_vars -> Array (
category_name => 'noticias',
)
* Não é a função query_posts()
WP_Query Object
(
[query] => Array
(
[category_name] => noticias
)
[query_vars] => Array
(
[category_name] => noticias
[cat] => 33
[posts_per_page] => 10
[order] => DESC
)
[queried_object] => WP_Term Object
[queried_object_id] => 33
[posts] => Array
[found_posts] => 3
[is_archive] => 1
[is_category] => 1
)
pre_get_posts
New WP_Query
get_posts()
add_action( 'pre_get_posts', 'uwp_altera_posts_per_page' );
function uwp_altera_posts_per_page( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
if ( $query->is_category( 'noticias' ) ) {
$query->set( 'posts_per_page', '20' );
}
}query_posts( 'posts_per_page=20' );
function query_posts($query) {
$GLOBALS['wp_query'] = new WP_Query();
return $GLOBALS['wp_query']->query($query);
}is_home()
front-page.php > home.php > page.php > index.php
is_page()
{custom-template}.php > page-{slug}.php > page-{id}.php > page.php > index.php
is_single()
single-{post-type}.php > single.php > index.php
is_category()
category-{slug}.php > category-{id}.php > category.php > archive.php > index.php
Como o WP define qual arquivo de template irá usar?
$wp_query (
is_home => false,
is_page => false,
is_single => false,
is_category => true,
... )
Através das Query Vars
if ( have_posts() ) :
while ( have_posts() ) : the_post();
the_title();
the_content();
endwhile;
endif;Loop é uma estrutura de repetição responsável por exibir o conjunto de posts wp_query->posts resultante da busca no banco de dados.
post, post_count, current_post, in_the_loop
Início do loop
Tudo entre este ponto e o fim do loop será repetido até encerrar a lista de posts consultados no BD.
the_title()
Imprime o título do post que está sendo iterado.
the_excerpt()
Imprime o resumo do post que está sendo iterado.
the_content()
Imprime o conteúdo do post que está sendo iterado.
the_category()
Imprime a categoria do post que está sendo iterado.
the_author()
Imprime o autor do post que está sendo iterado.
Fim do loop
Retorna para o início do loop se houver mais posts ou encerra e continua execução do template.
Outras templates tags
Quaisquer outras templates tags deverão entrar no loop.
Continua execução do template
Sair