私は本当にいくらか助けを必要としています、私はこの要求で他に向けるべき場所を知りません。自分の投稿にショートコードを追加したいのですが。テンプレートタグget_next_post()およびget_previousは、各投稿ページで投稿ナビゲーションを表示したくないため、表示される場所を制御したいので、使用できません。 HTML構造のDIVでは、投稿で作成しました。
だから私が必要なのはget_next_post()とget_previous_post()からショートコードを生成することです。
これはとても簡単です。
// 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' );
がんばろう!ご質問がありましたら....
上記のコードにはいくつか問題がありました。正しい場所で画面にエコーを表示させるには、ショートコードの出力をob_start()で囲む必要があります。また、上記のコメントの1つとして、これらの関数はすでに結果をエコーしているので、それらを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;
}