WordPressには、固定投稿と呼ばれる非常に便利な機能があります。固定投稿は、ブログの注目の投稿と考えてください。投稿を固定としてマークすると、新しい投稿の上に表示されますが、テーマがそれを許可している場合に限ります。このチュートリアルでは、WordPressで最新の固定投稿を表示する方法を説明します。

注意:これは中級レベルのチュートリアルであり、基本的なHTML/CSSの知識とWordPressテーマの知識が必要です。
動画チュートリアル
動画が気に入らなかった場合や、さらに詳しい説明が必要な場合は、読み進めてください。
まず、このコードスニペットをテーマのfunctions.phpファイルまたはサイト固有のプラグインにコピー&ペーストする必要があります。
function wpb_latest_sticky() {
/* Get all sticky posts */
$sticky = get_option( 'sticky_posts' );
/* Sort the stickies with the newest ones at the top */
rsort( $sticky );
/* Get the 5 newest stickies (change 5 for a different number) */
$sticky = array_slice( $sticky, 0, 5 );
/* Query sticky posts */
$the_query = new WP_Query( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1 ) );
// The Loop
if ( $the_query->have_posts() ) {
$return .= '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
$return .= '<li><a href="' .get_permalink(). '" title="' . get_the_title() . '">' . get_the_title() . '</a><br />' . get_the_excerpt(). '</li>';
}
$return .= '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
return $return;
}
add_shortcode('latest_stickies', 'wpb_latest_sticky');
上記のコードは、WordPressデータベースにクエリを実行して、最新の固定投稿5件を取得します。次に、各固定投稿のタイトルをリンク付きでリスト形式で表示します。これらすべてを関数でラップし、ショートコードを作成しました。
最新の固定投稿を表示するには、WordPressの投稿、ページ、またはテキストウィジェットのどこにでもショートコード `[latest_stickies]` を使用できます。
テキストウィジェット内でショートコードを使用したい場合は、テーマのfunctions.phpまたはサイト固有のプラグインにこの追加コード行を追加する必要があります。
add_filter('widget_text', 'do_shortcode');
このスニペットと関数は、フィーチャースライダーや、サイトに表示したいその他の高度な機能に非常に役立ちます。このスニペットは、主にカスタムホームページまたは雑誌スタイルの外観を持つWordPressサイト向けです。
これで完了です。この記事がWordPressブログに最新の固定投稿を表示するのに役立ったことを願っています。WordPressで固定投稿に有効期限を追加する方法に関するチュートリアルも確認したいかもしれません。
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。また、TwitterやGoogle+でもフォローできます。
umair
あなたの非常に有益な努力により、このコードは完全に機能します。
複数のカテゴリとサブカテゴリがありますが、各カテゴリに個別にスティッキー投稿を作成し、すべての投稿がリストされているカテゴリリストページに表示したいと考えています。たとえば、(スポーツカテゴリ->スティッキー投稿1つ – 料理レシピカテゴリ->スティッキー投稿1つ)などです。
Dom
正しい方向へ導いてくれてありがとうございます!!
ショートコードが貼り付けられた場所にタイトルを表示させるコードはうまく機能しています。
ただし、特定のページに投稿全体(タイトルや抜粋だけでなく、すべてのコンテンツ)を表示する方法を探していました。
上記のコードを試してこれを達成しようとしましたが、最終的に管理できました…
タイトルは段落テキストと同じサイズで表示されますが、それを修正できると確信しています。
Here’s what I changed…please let me know if you think there’s something I should reconsider lest the whole world explodes
get_the_excerpt() のテキストを get_the_content() に変更しただけで、ブログ記事全体がそのページに正常に読み込まれました。
箇条書きのインデントを削除するために、” ” ” ” タグを削除しましたが、アポストロフィはそのまま残す必要がありました。そうしないとページが読み込まれませんでした。
つまり、以前は「”」または「”」だったところが、今は「”」だけになったということです。
私が変更したのはそれだけで、ほとんど問題なく動作しています…
気づいた問題が2つあります。
1: 時々、投稿のほとんどは読み込まれますが、常に最後まで読み込まれるわけではありません。特に投稿が後で編集された場合…これが起こらないようにするための提案はありますか?
2: 投稿のアイキャッチ画像も表示されると嬉しいです。そうすれば、究極の柔軟なソリューションになります!何か考えはありますか?
アドバイスをありがとう!
私が説明したことが、同じことを達成したいと思っている誰かに理解されることを願っています。
アチバテン
ホームページにあなたのよう投稿を表示するにはどうすればよいですか?
WPBeginnerサポート
当サイトでは、独自のニーズに合わせて特別にデザインされたカスタムテーマを使用しています。ただし、同様の機能は、他の多くのマガジンテーマで見つけることができます。
管理者
richard
こんにちは
コードをありがとうございます。しかし、私が達成しようとしていることがあり、2つの問題があります。
ホームページに1つの固定投稿のみを表示し、コンテンツにあるYouTube動画のみを表示したいです。
実際、投稿のタイトルとすべてのコンテンツ(テキスト、画像、動画を含む)を表示します。
2番目の問題は、YouTubeが直接動画をホームページに埋め込むのではなく、リンクとして表示されることです。
ご協力ありがとうございます
Raviraj
こんにちは、
コードを試しましたが、少なくとも1つの投稿が固定投稿として割り当てられている場合は正常に動作しますが、固定投稿が割り当てられていない場合は、最新の5つの投稿すべてが表示されます。
固定投稿のみを表示する場合も同様の条件になります。固定投稿が割り当てられていない場合は、何も表示されないはずです。
事前に感謝いたします
WPBeginnerスタッフ
ご指摘ありがとうございます。コードを更新しました。
AnastisSourgoutsidis
v3.1以降、「caller_get_posts」は「ignore_sticky_posts」に置き換えられたため、コードをそれに合わせて変更することが重要だと思います。
また、a) $post->ID は、$the_query->the_post() を呼び出して投稿データを設定しているため、get_permalink() のこのインスタンスでは不要です。もし何らかの理由で $post->ID を含めたい場合は、グローバル化する必要があります。つまり、global $post; です。