ホームページ >CMS チュートリアル >&#&プレス >WordPress用のポストシリーズプラグインを作成します
WordPress Post Seriesプラグインを使用すると、投稿を連続的に整理して本やコースを作成できます。ユーザーに学習のパスを提供します。投稿シリーズプラグインを使用して、長い投稿を複数の部品に分割することもできます。 このチュートリアルでは、一連の投稿を表示するためのプラグインを作成する方法を紹介します。同じコードをテーマ機能としてテーマに統合することもできます。
キーテイクアウト
ポストシリーズの作成方法カスタム投稿タイプ
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: SitePoint Post Series </span></span><span><span>Plugin URI: https://www.sitepoint.com/ </span></span><span><span>Description: This used is used to create a post series. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
ここでは、WordPressの投稿で使用されているのと同じ分類法を持つカスタム投稿タイプを作成しました。これは、カテゴリポストシリーズも作成できるようにするためです。 また、flushの書き換えルールを洗い流すためのアクティベーションフックと非アクティブ化フックも追加しました。これは、ポストシリーズをフロントエンドで表示できるようにするためです。
これが私たちのカスタム投稿タイプが管理画面に見えるものです:
投稿シリーズメタボックスを投稿に追加します
ここでは、メタボックスに2つのフィールドを追加します。テキストフィールドは、著者がシリアル番号を入力するために使用され、ドロップダウンを使用して、ポストが属するポストシリーズ名を選択します。投稿シリーズに投稿を追加したくない場合は、1つまたは両方のフィールドを空白のままにする必要があります。
これが管理者の投稿画面でどのように見えるか:
<span>function sitepoint_post_series_custom_post_type() </span><span>{ </span> <span>register_post_type("sitepoint-postseries", array( </span> <span>"labels" => array("name" => __("Post Series"), "singular_name" => __("Post Series")), </span> <span>"public" => true, </span> <span>"has_archive" => true, </span> <span>"rewrite" => array("slug"=> "post-series"), </span> <span>"supports" => array("editor", "title", "excerpt", "thumbnail", "comments"), </span> <span>"capability_type" => "post", </span> <span>"publicly_queryable" => true, </span> <span>"taxonomies" => array("category", "post_tag"), </span> <span>) </span> <span>); </span><span>} </span> <span>add_action("init", "sitepoint_post_series_custom_post_type", 2); </span> <span>/* Flush Rewrite Rules */ </span> <span>function sitepoint_post_series_activation() </span><span>{ </span> <span>sitepoint_post_series_custom_post_type(); </span> <span>flush_rewrite_rules(); </span><span>} </span> <span>register_activation_hook( __FILE__, "sitepoint_post_series_activation"); </span><span>register_deactivation_hook( __FILE__, "sitepoint_post_series_activation");</span>
フォームが保存されたら、メタボックスフィールドを保存する必要があります。これを行うコードは次のとおりです
ここで、メタボックスコンテンツを保存してから、ユーザーがシリーズを削除したり、シリーズを追加したり、シリーズを変更したりするかどうかに応じて、異なる引数値を持つ関数を異なる引数値で呼び出します。
これで、すべての管理者エーカーコードが完了しました。これで、投稿を作成してシリーズに割り当てることができるはずです。また、各シリーズにカテゴリとタグを割り当てます
インデックスページとアーカイブページに表示される投稿シリーズを作成 カスタム投稿タイプは、インデックスページとアーカイブページではまだ表示されていません。これらのページでも見えるようにするには、以下にコードを追加する必要があります。
投稿シリーズの投稿 ポストシリーズタイプのコンテンツをフィルタリングし、シリーズに属する投稿を追加する必要があります。
設定文字列から投稿シリーズの投稿を取得しています。これは、メタデータの保存中に保存しました。
と比較します
WordPressカテゴリとタグでは関連する投稿をグループ化することができますが、ポストシリーズプラグインが提供するシーケンシャル構造がありません。投稿シリーズプラグインを使用すると、特定のシーケンスで投稿を注文して、読者がストーリーラインまたは構造化された学習パスに簡単に従うことができます。ウェブサイト? 投稿シリーズを作成することは、私のウェブサイトのSEOにどのように影響しますか?関連する投稿をグループ化することにより、検索エンジンが愛する内部リンクの豊富なネットワークを作成しています。また、読者がシリーズで複数の投稿を読む可能性が高いため、ウェブサイトの滞留時間を増やします。必要なだけ多くの投稿シリーズを作成できます。これは、複数のトピックをカバーしている、またはさまざまな種類のシリアル化コンテンツを持っているWebサイトに特に便利です。この関数は、特定のシリーズに属するWordPress Post IDを保存する文字列を作成します。そして、文字列をWordPress設定として保存します。
/* Add Custom Meta Boxes in WordPress Posts */
function sitepoint_post_series_meta_box_markup($object)
{
wp_nonce_field(basename(__FILE__), "sitepoint-postseries");
?>
<span><span><span><div</span>></span>
</span> <span><span><span><label</span> for<span>="sitepoint-postseries-serial-number"</span>></span>Serial Number<span><span></label</span>></span>
</span> <span><span><span><br</span>></span>
</span> <span><span><span><input</span> name<span>="sitepoint-postseries-serial-number"</span> type<span>="text"</span> value<span>="<span><?php echo get_post_meta($object->ID, "sitepoint-postseries-serial-number", true); ?></span>"</span>></span>
</span>
<span><span><span><br</span>></span>
</span>
<span><span><span><label</span> for<span>="sitepoint-postseries-id"</span>></span>Name<span><span></label</span>></span>
</span> <span><span><span><br</span>></span>
</span> <span><span><span><select</span> name<span>="sitepoint-postseries-id"</span>></span>
</span> <span><span><span><option</span> value<span>=""</span>></span>-<span><span></option</span>></span>
</span> <span><span><?php
</span></span><span> <span>$posts = get_posts("post_type=sitepoint-postseries");
</span></span><span> <span>$selected_series = get_post_meta($object->ID, "sitepoint-postseries-id", true);
</span></span><span> <span>foreach($posts as $post)
</span></span><span> <span>{
</span></span><span> <span>$id_post = $post->ID;
</span></span><span> <span>if($id_post == $selected_series)
</span></span><span> <span>{
</span></span><span> <span>?></span>
</span> <span><span><span><option</span> selected value<span>="<span><?php echo $post->ID; ?></span>"</span>></span><span><?php echo $post->post_title; ?></span><span><span></option</span>></span>
</span> <span><span><?php
</span></span><span> <span>}
</span></span><span> <span>else
</span></span><span> <span>{
</span></span><span> <span>?></span>
</span> <span><span><span><option</span> value<span>="<span><?php echo $post->ID; ?></span>"</span>></span><span><?php echo $post->post_title; ?></span><span><span></option</span>></span>
</span> <span><span><?php
</span></span><span> <span>}
</span></span><span> <span>}
</span></span><span> <span>?></span>
</span> <span><span><span></select</span>></span>
</span> <span><span><span></div</span>></span>
</span> <span><span><?php
</span></span><span><span>}
</span></span><span>
</span><span><span>function sitepoint_post_series_custom_meta_box()
</span></span><span><span>{
</span></span><span> <span>add_meta_box("sitepoint-postseries", "Post Series", "sitepoint_post_series_meta_box_markup", "post", "side", "low", null);
</span></span><span><span>}
</span></span><span>
</span><span><span>add_action("add_meta_boxes", "sitepoint_post_series_custom_meta_box");</span></span>
<span>/* Callback to Save Meta Data */
</span>
<span>function sitepoint_post_series_save_custom_meta_box($post_id, $post, $update)
</span><span>{
</span>
<span>if(!isset($_POST["sitepoint-postseries"]) || !wp_verify_nonce($_POST["sitepoint-postseries"], basename(__FILE__)))
</span> <span>return $post_id;
</span>
<span>if(!current_user_can("edit_post", $post_id))
</span> <span>return $post_id;
</span>
<span>if(defined("DOING_AUTOSAVE") && DOING_AUTOSAVE)
</span> <span>return $post_id;
</span>
<span>$slug = "post";
</span> <span>if($slug != $post->post_type)
</span> <span>return;
</span>
<span>$serial_number = null;
</span> <span>if(isset($_POST["sitepoint-postseries-serial-number"]))
</span> <span>{
</span> <span>$serial_number = $_POST["sitepoint-postseries-serial-number"];
</span> <span>}
</span> <span>else
</span> <span>{
</span> <span>$serial_number = "";
</span> <span>}
</span> <span>update_post_meta($post_id, "sitepoint-postseries-serial-number", $serial_number);
</span>
<span>$series_id = null;
</span> <span>if(isset($_POST["sitepoint-postseries-id"]))
</span> <span>{
</span> <span>$series_id = $_POST["sitepoint-postseries-id"];
</span> <span>}
</span> <span>else
</span> <span>{
</span> <span>$series_id = "";
</span> <span>}
</span>
<span>$previous_series_id = get_post_meta($post_id, "sitepoint-postseries-id", true);
</span>
<span>update_post_meta($post_id, "sitepoint-postseries-id", $series_id);
</span>
<span>//no series, removing series, adding new series or changing series
</span>
<span>if($previous_series_id == "" && $series_id == "")
</span> <span>{
</span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id);
</span> <span>}
</span> <span>else if($previous_series_id != "" && $series_id == "")
</span> <span>{
</span> <span>sitepoint_post_series_save_settings($previous_series_id, "", $post_id);
</span> <span>}
</span> <span>else if($previous_series_id == "" && $series_id != "")
</span> <span>{
</span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id);
</span> <span>}
</span> <span>else if($previous_series_id != "" && $series_id != "")
</span> <span>{
</span> <span>sitepoint_post_series_save_settings($previous_series_id, "", $post_id);
</span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id);
</span> <span>}
</span><span>}
</span>
<span>add_action("save_post", "sitepoint_post_series_save_custom_meta_box", 10, 3);</span>
ここでは、pre_get_postsフックを使用して、投稿シリーズを$ q変数に追加します。これは、メインループで投稿を表示するために使用されます。
これにより、HTML Unordered List Tagを使用して投稿が表示されます。画像のない投稿の場合、Lorempixel Cloud Serviceの画像をロードして、ランダムなテクスチャ画像を生成します。
投稿シリーズに属する投稿に投稿シリーズボックスを追加して、投稿が特定の投稿シリーズに属していることをユーザーに示すこともできます。これを行うコードは次のとおりです
<span>function sitepoint_post_series_custom_post_type()
</span><span>{
</span> <span>register_post_type("sitepoint-postseries", array(
</span> <span>"labels" => array("name" => __("Post Series"), "singular_name" => __("Post Series")),
</span> <span>"public" => true,
</span> <span>"has_archive" => true,
</span> <span>"rewrite" => array("slug"=> "post-series"),
</span> <span>"supports" => array("editor", "title", "excerpt", "thumbnail", "comments"),
</span> <span>"capability_type" => "post",
</span> <span>"publicly_queryable" => true,
</span> <span>"taxonomies" => array("category", "post_tag"),
</span> <span>)
</span> <span>);
</span><span>}
</span>
<span>add_action("init", "sitepoint_post_series_custom_post_type", 2);
</span>
<span>/* Flush Rewrite Rules */
</span>
<span>function sitepoint_post_series_activation()
</span><span>{
</span> <span>sitepoint_post_series_custom_post_type();
</span> <span>flush_rewrite_rules();
</span><span>}
</span>
<span>register_activation_hook( __FILE__, "sitepoint_post_series_activation");
</span><span>register_deactivation_hook( __FILE__, "sitepoint_post_series_activation");</span>
WP Postシリーズ:これは、整理シリーズプラグインのようにも動作します。違いの1つは、ポストシリーズページにカスタマイズを提供しないことです。
結論下のプラグインでの経験についてお気軽にコメントしてください。
ポストシリーズプラグインは、標準のWordPressカテゴリとタグとどのように異なりますか?
はい、ほとんどのポストシリーズプラグインはカスタマイズオプションを提供します。レイアウト、色、フォント、その他のデザイン要素を変更して、Webサイトの全体的な美学に合わせて変更できます。また、一部のプラグインを使用すると、より高度なカスタマイズのためにカスタムCSSを追加することもできます。
シリーズが公開された後に投稿を追加することは可能ですか?いつでもシリーズへの新しい投稿。ほとんどのポストシリーズプラグインを使用すると、シリーズを簡単に管理および更新して、コンテンツが関連性があり最新の状態を確保できます。 >
はい、Multi-Outhorサイトでポストシリーズプラグインを使用できます。複数の著者からコンテンツを管理および整理し、すべての投稿で一貫性と一貫性を確保するための優れたツールになります。 WordPressの投稿シリーズを作成するには、コーディングスキルは必要ありません。ほとんどのポストシリーズプラグインには、シリーズを簡単に作成および管理できるようにするユーザーフレンドリーなインターフェイスが付属しています。ポストシリーズプラグインは、WordPressテーマでシームレスに動作するように設計されています。ただし、プラグインのドキュメントを確認するか、確認のために開発者に連絡することをお勧めします。WordPressに利用できる無料のポストシリーズプラグインはありますか? WordPressで利用可能なプラグイン。ただし、無料のプラグインは、プレミアムプラグインほど多くの機能やサポートを提供しない場合があることに留意してください。あなたのニーズと予算に最適なプラグインを常に選択してください。
以上がWordPress用のポストシリーズプラグインを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。