Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Paginação de conteudo Wordpress

Boa tarde, estou com um problema criei uma paginação em Wordpress, porém quando eu uso o campo de busca da pagina e clico para ir em pagina 2, ele muda na URL, porém o conteudo continua o mesmo e não altera realmente para pagina 2. O campo de busca é o "Busca Material", o erro pode ser simulado aqui: https://www.softexpert.com.br/material/

Segue o código : https://gist.github.com/wellingtonngallo/b94f24ed3adce06fe5b36c15d0a247fb https://gist.github.com/wellingtonngallo/c659130fe66c83b175694316dee9812e

Podem me ajudar? Grato.

9 respostas

Oi Maria, tudo bem? Aqui o problema não aconteceu, você já solucionou?

Olá tudo bem? O problema acontece quando você usa o campo de busca da pagina

Utilize o campo de busca, digite ISO, vai trazer os resultados, apos isso tente mudar a paginação. o Campo "Buscar Material" com uma lupa ao lado. Segue a print: http://ap.imagensbrasil.org/image/8KYx78

OI Maria, de acordo com a hierarquia dos templates do WordPress, ao você utilizar a pesquisa, ele vai direto para o search.php e não para algum archive-algumacoisa.php (https://developer.wordpress.org/files/2014/10/wp-hierarchy.png)

O que me parece confuso é: você de alguma forma modificou esse comportamento? Você poderia mostrar seu search.php pra gente ver?

Claor, segue o código

<?php defined( 'ABSPATH' ) OR die( 'This script cannot be accessed directly.' );

/**
 * The template for displaying search results pages
 */

$us_layout = US_Layout::instance();
// Needed for canvas class
$us_layout->titlebar = ( us_get_option( 'titlebar_archive_content', 'all' ) == 'hide' ) ? 'none' : 'default';
$us_layout->sidebar_pos = us_get_option( 'search_sidebar', 'right' );
get_header();

$template_vars = array(
    'layout_type' => us_get_option( 'search_layout', 'compact' ),
    'masonry' => us_get_option( 'search_masonry', 0 ),
    'columns' => us_get_option( 'search_cols', 1 ),
    'metas' => (array) us_get_option( 'search_meta', array() ),
    'content_type' => us_get_option( 'search_content_type', 'excerpt' ),
    'show_read_more' => in_array( 'read_more', (array) us_get_option( 'search_meta', array() ) ),
    'pagination' => us_get_option( 'search_pagination', 'regular' ),
);
?>


<div class="l-titlebar imgsize_initial size_large color_alternate"><div class="l-titlebar-img loaded" data-img-width="1920" data-img-height="322"></div><div class="l-titlebar-h"><div class="l-titlebar-content"><h1 itemprop="headline"><?php _e('Search Results for', 'us') ?> "<?php echo esc_attr( get_search_query()); ?>"</h1></div></div></div>

<!-- MAIN -->
<div class="l-main">
    <div class="l-main-h i-cf">

        <main class="l-content" itemprop="mainContentOfPage">
            <section class="l-section">
                <div class="l-section-h i-cf">

                    <?php do_action( 'us_before_search' ) ?>

                    <?php us_load_template( 'templates/blog/listing', $template_vars ) ?>

                    <?php do_action( 'us_after_search' ) ?>

                </div>
            </section>
        </main>

<?php if ( $us_layout->sidebar_pos == 'left' OR $us_layout->sidebar_pos == 'right' ): ?>
        <aside class="l-sidebar at_<?php echo $us_layout->sidebar_pos ?>" itemscope="itemscope" itemtype="https://schema.org/WPSideBar">
            <?php dynamic_sidebar( 'default_sidebar' ) ?>
        </aside>
<?php endif; ?>

    </div>
</div>


<?php
get_footer();

Nossa Maria, agora é preciso entender o que está acontecendo antes, durante e depois da pesquisa. Principalmente antes e durante, o trecho de código é este aqui:

<?php do_action( 'us_before_search' ) ?>
<?php us_load_template( 'templates/blog/listing', $template_vars ) ?>
<?php do_action( 'us_after_search' ) ?>

Mas, para que a gente não se perca em um tópico enorme avaliando pedaço a pedaço de código do tema, você se importaria em disponibilizar pra mim, aqui mesmo ou se for privado, por email para que eu avalie de pertinho o que está acontecendo pra poder chegar na solução rapidinho?

Pode me encaminhar seu e-mail ou skype?

manda no wanderson.sabino@alura.com.br

solução!

A solução foi adicionar uma condição que sobrescrevesse a variável paged dos queries variables do objeto wp_query na função de filtro do pre_get_posts.

if($query->is_paged()){
    $query->set('paged', $query->query['paged']);
}