• Resuelto silvia_spn86

    (@silvia_spn86)


    Hola, tengo un problema que no se como solucionar.

    Estoy intentando desactivar la paginación de los post en caso de que sea la primera entrada o la última.
    Sabéis de que forma podría arreglarlo?

    Este es el código

    add_filter( 'previous_post_link', 'tg_filter_single_post_pagination', 10, 5 );
    add_filter( 'next_post_link',     'tg_filter_single_post_pagination', 10, 5 );
    
    function tg_filter_single_post_pagination( $output, $format, $link, $post, $icon ){
        $title = get_the_title( $post );
        $url   = get_permalink( $post->ID );
        $text  = 'Articulo anterior';
        $class = 'pagination-prev';
        $rel   = 'prev';
        $icon  = 'icon-left-thin';
    
        if ( 'next_post_link' === current_filter() ){
            $text  = 'Articulo siguiente';
            $class = 'pagination-next';
            $rel   = 'next';
            $icon  = 'icon-right-thin';
        }
    
        return "<a href='$url' rel='$rel' class='$class'>
    		<span class='arrow-text $icon'>$text</span>
                    <p>$title</p>
    	    </a>";
    }
Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • En el callback del filtro, puedes comprobar si $post es un post. Por ejemplo, si el filtro es para previous_posts_link, el callback recibirá el post previo en la variable $post, si no hay post previo esa variable no contendrá ningún post. En el core, en get_adjacent_post_link() lo hacen así:

    if( ! $post ) $output = '';

    Algo así debería servirte:

    
    add_filter( 'previous_post_link', 'tg_filter_single_post_pagination', 10, 5 );
    add_filter( 'next_post_link',     'tg_filter_single_post_pagination', 10, 5 );
    function tg_filter_single_post_pagination( $output, $format, $link, $post, $icon ){
    
        if( ! $post ) {
            $output = '';
        } else {
            $title = get_the_title( $post );
            $url   = get_permalink( $post->ID );
            $text  = 'Articulo anterior';
            $class = 'pagination-prev';
            $rel   = 'prev';
            $icon  = 'icon-left-thin';
    
            if ( 'next_post_link' === current_filter() ){
                $text  = 'Articulo siguiente';
                $class = 'pagination-next';
                $rel   = 'next';
                $icon  = 'icon-right-thin';
            }
    
            $output = "<a href='$url' rel='$rel' class='$class'>
    		<span class='arrow-text $icon'>$text</span>
                    <p>$title</p>
    	    </a>";
        }
    
        return $output;
    
    }
    Iniciador del debate silvia_spn86

    (@silvia_spn86)

    Muchas gracias @cybmeta!!! No pensaba que me fueras a responder tu. Soy seguidora de tus publicaciones jajaja

    Un saludo y muchísimas gracias!!

    Gracias a tí, un placer.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Deshabilitar paginación de post (prev y next) cuando es el primero o último’ está cerrado a nuevas respuestas.