Criando um Shortcode [NEXT] e [PREVIOUS] para colocar em posts específicos para postar navegação

4

Eu realmente preciso de ajuda, não sei mais para onde fazer essa solicitação. Gostaria de adicionar um shortcode a uma das minhas postagens. As tags de template get_next_post () e get_previous não funcionarão para mim, pois eu não quero postar a navegação em cada página de postagem e quero controlar onde ela é exibida. Em um DIV em uma estrutura HTML que criei em uma postagem.

Então, o que eu preciso é gerar códigos de acesso de get_next_post () e get_previous_post ()

    
por brett 24.03.2011 / 09:28

2 respostas

1

isso é muito simples de fazer ...

 // next   
function next_shortcode($atts) {
        // global $post; -unnecessary 

           return '<div class="nav-next">'.next_post_link( '%link', '%title <span class="meta-nav">' . _x( '', 'Next post link', ' ' ) . '</span>',true ).'</div>';              
        }
        add_shortcode( 'next', 'next_shortcode' );

//prev
 function prev_shortcode($atts) {
     //global $post; -unnecessary 

       return '<div class="nav-previous">'.next_post_link( '%link', '%title <span class="meta-nav">' . _x( '', 'Previous post link', ' ' ) . '</span>',true ).'</div>';              
    }
    add_shortcode( 'prev', 'prev_shortcode' );

Boa sorte! Aqui para qualquer pergunta ....

    
por zina 24.03.2011 / 10:17
1

Houve alguns problemas com o código acima. Você precisa agrupar a saída shortcode com ob_start () para fazer com que ela ecoe na tela no lugar certo. Além disso, como um dos comentadores acima mencionados, essas funções já refletem o resultado, portanto, colocá-las em uma instrução de retorno não funcionará corretamente.

Aqui está minha correção:

add_shortcode( 'prev', 'prev_shortcode' );
add_shortcode( 'next', 'next_shortcode' );
function next_shortcode($atts) {
    global $post;
    ob_start(); 
    next_post_link( '<div class="nav-next">%link</div>', 'Next post link' );              
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
}

function prev_shortcode($atts) {
    global $post;
    ob_start();
    previous_post_link( '<div class="nav-previous">%link</div>', 'Previous post link' );              
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
}
    
por Marty Thornley 03.09.2011 / 19:55