作成しているショートコードに問題があります。
私は5〜10種類のカスタム投稿タイプを持っていますが、個々の投稿タイプごとにテンプレートを作成するのではなく、Idは通常のページを使用し、ショートコードを使用して投稿をインポートします。
それでさらに説明するために、私はアトラクションと呼ばれるページと 'アトラクション'と呼ばれる投稿タイプを持っています。ページ上に私はショートコードを挿入します - > [feed type = "attraction" limit = "5"]
これは、カスタム投稿タイプ "attraction"の下のすべての投稿を出力します。
私が抱えている問題は、それを正しくページ付けすることです。カスタム投稿タイプをページ分割するための千の方法を読んだことがあるので、私が現在使用しているコードは非常に多くの人々によるとうまくいく傾向がありますが、私はこれをショートコードの中でうまく動かせません。これには理由がありますか?
現在、ページは5つの投稿で問題なく表示されていますが、前の投稿の次のリンクには反映されません。 url +/page/2と入力すると、2ページ目がセクションの次の5つの投稿とともに正しく表示されます。そのため、ページ付けは機能しているようですが、Next/Previous Linkが表示されないため、アクセスできません。
このようにすることの利点は、通常のページを使用し、投稿をインポートし、そして呼ばれたショートコードの上下にコンテンツを含めることができるということです。
これがすべて理にかなっていることを願っています。
私のショートコードコードをヘレス - >
function section_feed_shortcode( $atts ) {
extract( shortcode_atts( array( 'limit' => -1, 'type' => 'post'), $atts ) );
global $paged;
$q = new WP_Query( array (
'posts_per_page' => $limit,
'post_type' => $type,
order => 'ASC',
orderby =>'menu_order',
'paged' => $paged ) );
$list = ' ';
while ( $q->have_posts() ) { $q->the_post();
$list .= '<article class="listing-view clearfix">'
. '<div class="listing-content">'
. '<h3><a href="' . get_permalink() . '">' . get_the_title() . '</a></h3>'
.'<p>' . get_the_excerpt() . '</p>'
. '<a href="' . get_permalink() . '">' . 'View »' . '</a>'
. '</div>'
. '<a class="listing-thumb" href="' . get_permalink() . '">' . get_the_post_thumbnail($page->ID, 'listing-thumb') . '<span></span></a>'
. '</article>';
}
return
'<div class="listings clearfix">'
. $list
. '<div class="nav-previous">' . next_posts_link( __( '<span class="meta-nav">←</span> Older posts' ) ) . '</div>'
. '<div class="nav-next">' . previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>' ) ) . '</div>'
. '</div>' .
wp_reset_query();
}
add_shortcode( 'feed', 'section_feed_shortcode' );
わかりました、私はまだ2番目のクエリのアイデアを好きではありませんが、アーカイブページにコンテンツを追加するのは難しいことです。
私が見つけた3つの問題がありました:
next_posts_linkとprevious_posts_linkは両方共エコーしているので、get_に相当するものが必要です。
get_next_posts_linkを調べると、グローバル$ wp_query ...に依存していることがわかります。これは、実際の "ページ"用であり、ショートコードのクエリ用ではありません。その後、実際にquery_postsを実行し、元のクエリを削除する必要があります。リセットクエリが機能することを願っていますが、100%確実というわけではありません。あなたはそれをテストする必要があります。
これが問題だったかどうかわからないが、私は通常$ paged変数がこのように定義されているのを見ているので、それを使った。
function section_feed_shortcode( $atts ) {
extract( shortcode_atts( array( 'limit' => -1, 'type' => 'post'), $atts ) );
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
query_posts( array (
'posts_per_page' => $limit,
'post_type' => $type,
'order' => 'ASC',
'orderby' =>'menu_order',
'paged' => $paged ) );
$list = ' ';
while ( have_posts() ) { the_post();
$list .= '<article class="listing-view clearfix">'
. '<div class="listing-content">'
. '<h3><a href="' . get_permalink() . '">' . get_the_title() . '</a></h3>'
.'<p>' . get_the_excerpt() . '</p>'
. '<a href="' . get_permalink() . '">' . 'View »' . '</a>'
. '</div>'
. '<a class="listing-thumb" href="' . get_permalink() . '">' . get_the_post_thumbnail($page->ID, 'listing-thumb') . '<span></span></a>'
. '</article>';
}
return
'<div class="listings clearfix">'
. $list
. '<div class="nav-previous">' . get_next_posts_link( __( '<span class="meta-nav">←</span> Older posts' ) ) . '</div>'
. '<div class="nav-next">' . get_previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>' ) ) . '</div>'
. '</div>' .
wp_reset_query();
}
add_shortcode( 'feed', 'section_feed_shortcode' );