设置短代码[下一个]和[上一个]以放入特定帖子中以进行帖子导航

时间:2011-03-24 作者:brett

我真的需要一些帮助,我不知道还有什么地方可以满足这个请求。我想在我的一篇帖子中添加一个短代码。模板标记get\\u next\\u post()和get\\u previous对我不起作用,因为我不想在每个帖子页面上进行帖子导航,我想控制它显示的位置。在我在帖子中创建的HTML结构的DIV中。

所以我需要的是从get\\u next\\u post()和get\\u previous\\u post()生成短代码

2 个回复
最合适的回答,由SO网友:zina 整理而成

这很简单。。。

 // 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\' );
祝你好运!这里有任何问题。。。。

SO网友:Marty Thornley

上面的代码有几个问题。您需要使用ob\\u start()包装短代码输出,以便使其在正确的位置回显到屏幕。此外,正如上面提到的一个注释所述,这些函数已经响应了它们的结果,因此将它们放在return语句中将无法正常工作。

以下是我的解决方案:

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;
}

结束

相关推荐

Nested Shortcode Detection

如果您熟悉此代码<?php $pattern = get_shortcode_regex(); preg_match(\'/\'.$pattern.\'/s\', $posts[0]->post_content, $matches); if (is_array($matches) && $matches[2] == \'YOURSHORTCODE\') { //shortcode is being used }&#