ホームページ >CMS チュートリアル >&#&プレス >WordPress用のポストシリーズプラグインを作成します

WordPress用のポストシリーズプラグインを作成します

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-02-18 12:09:10558ブラウズ

WordPress用のポストシリーズプラグインを作成します

WordPress Post Seriesプラグインを使用すると、投稿を連続的に整理して本やコースを作成できます。ユーザーに学習のパスを提供します。投稿シリーズプラグインを使用して、長い投稿を複数の部品に分割することもできます。 このチュートリアルでは、一連の投稿を表示するためのプラグインを作成する方法を紹介します。同じコードをテーマ機能としてテーマに統合することもできます。

キーテイクアウト

カスタム分類法の代わりにカスタム投稿タイプを利用して、WordPressの投稿シリーズを効果的に作成および管理し、ユーザーエクスペリエンスとコンテンツ組織の両方を強化します。

スタイリング用のPHPファイルとオプションのCSSを備えたプラグイン構造を実装し、WordPressがカスタムプラグインを認識して正しくインストールするようにします。
    WordPress管理者にメタボックスを含めて、著者が特定のシリーズに投稿を割り当てて連続的に注文し、シリーズの構造的完全性を改善できるようにします。
  • 「pre_get_posts」アクションを使用してメインクエリループを変更することにより、サイト上のポストシリーズの可視性を拡張し、インデックスページとアーカイブページにシリーズが含まれるようにします。
  • 以前の投稿と次の投稿にナビゲーションリンクを追加することにより、シリーズ内の個々の投稿を強化し、訪問者ごとのユーザーエンゲージメントとページビューを強化します。
  • 分類法とポストシリーズ
  • WordPressでは、分類法を使用して、同様の投稿をグループ化または整理します。しかし、WordPressは、特定の分類法のすべての投稿をカスタマイズされたシリアル方法で表示する方法を提供していません。 WordPressの分類法はarchive.phpファイルを使用して表示されるため、単一のインデックス可能な投稿として投稿シリーズを作成することはできません。
  • したがって、投稿シリーズが必要です。これは、実際にはシリアル方法で他の投稿を含む1つの投稿です。
  • ポストシリーズの作成方法
投稿シリーズを作成するには、さまざまな方法があります。 WordPress.orgで見つかった人気のあるポストシリーズプラグインは、WordPress投稿でカスタム分類法を使用して投稿シリーズを作成しますが、このチュートリアルでは、代わりにカスタム投稿タイプを使用します。

プラグインファイル構造

テーマにPostシリーズ機能を追加することもできます。この場合、このチュートリアルで言及されているすべてのコードを、テーマのfunctions.phpファイルに配置する必要があります。

ポストシリーズの作成方法カスタム投稿タイプ

最初に、各カスタム投稿タイプが投稿シリーズを表すカスタム投稿タイプを作成する必要があります。 というファイルに以下のコードを置きます
<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の書き換えルールを洗い流すためのアクティベーションフックと非アクティブ化フックも追加しました。これは、ポストシリーズをフロントエンドで表示できるようにするためです。

これが私たちのカスタム投稿タイプが管理画面に見えるものです:

投稿シリーズメタボックスを投稿に追加します

WordPress用のポストシリーズプラグインを作成します次に、WordPress投稿管理インターフェイスにメタボックスを追加する必要があります。これは、著者が投稿シリーズに投稿を添付し、投稿シリーズ内の投稿をソートするためのシリアル番号を提供できるようにするためです。

これがメタボックスを投稿するためのコードを投稿します:

ここでは、メタボックスに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用のポストシリーズプラグインを作成しますこの関数は、特定のシリーズに属する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><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> この実装の問題は、コードがシリーズの投稿数に等しいMySQL数にヒットすることです。特定のポストシリーズの投稿がたくさんある場合、パフォーマンスの問題がありますが、教育目的で含めました。 プラグインを他のポストシリーズプラグイン

と比較します

ここに、WordPress.orgのプラグインの一部があり、投稿シリーズを作成できます。上記で作成したプラグインとそれぞれを比較しました。

シリーズの整理:編成シリーズは、WordPressの投稿にカスタム分類法を追加します。カスタム分類法を表示すると、Archiveページに向かって追加されます。これは、ポストシリーズのタイトルのようです。また、投稿シリーズの投稿は分類法のように表示されますが、これはユーザーの観点からは大きくない場合があります。それに比べて、当社のプラグインはカスタム投稿タイプを使用して単一の投稿シリーズを表示して、注目の画像、テキスト、またはマークアップコンテンツ(およびその他)を投稿シリーズに追加できるようにします。ポストシリーズの投稿は、プラグインのアーカイブページと比較して異なって見えます。
<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ハッキングは含まれていません。このように、それははるかに互換性があります。

結論

開発ブログを所有している場合は、このプラグインを使用して独自の投稿シリーズを作成して、エンゲージメントとコンバージョン率を上げることができます。それを使用して、大きな投稿を複数の投稿に分割することもできます。
    下のプラグインでの経験についてお気軽にコメントしてください。
  1. WordPressのポストシリーズプラグインの作成に関するよくある質問ポストシリーズプラグインとは何ですか?なぜWordPressサイトに必要なのか?これは、コンテンツをシリアル化された形式で公開するブログやWebサイトにとって特に便利です。読者が関連コンテンツを簡単に移動できるようにすることで、ユーザーエクスペリエンスを向上させます。また、検索エンジンが十分に構造化された相互リンクされたコンテンツを好むため、ウェブサイトのSEOを改善するのにも役立ちます。

    ポストシリーズプラグインは、標準のWordPressカテゴリとタグとどのように異なりますか?

    WordPressカテゴリとタグでは関連する投稿をグループ化することができますが、ポストシリーズプラグインが提供するシーケンシャル構造がありません。投稿シリーズプラグインを使用すると、特定のシーケンスで投稿を注文して、読者がストーリーラインまたは構造化された学習パスに簡単に従うことができます。ウェブサイト?

    ​​

    はい、ほとんどのポストシリーズプラグインはカスタマイズオプションを提供します。レイアウト、色、フォント、その他のデザイン要素を変更して、Webサイトの全体的な美学に合わせて変更できます。また、一部のプラグインを使用すると、より高度なカスタマイズのためにカスタムCSSを追加することもできます。

    投稿シリーズを作成することは、私のウェブサイトのSEOにどのように影響しますか?関連する投稿をグループ化することにより、検索エンジンが愛する内部リンクの豊富なネットワークを作成しています。また、読者がシリーズで複数の投稿を読む可能性が高いため、ウェブサイトの滞留時間を増やします。必要なだけ多くの投稿シリーズを作成できます。これは、複数のトピックをカバーしている、またはさまざまな種類のシリアル化コンテンツを持っているWebサイトに特に便利です。

    シリーズが公開された後に投稿を追加することは可能ですか?いつでもシリーズへの新しい投稿。ほとんどのポストシリーズプラグインを使用すると、シリーズを簡単に管理および更新して、コンテンツが関連性があり最新の状態を確保できます。 >

    はい、Multi-Outhorサイトでポストシリーズプラグインを使用できます。複数の著者からコンテンツを管理および整理し、すべての投稿で一貫性と一貫性を確保するための優れたツールになります。 WordPressの投稿シリーズを作成するには、コーディングスキルは必要ありません。ほとんどのポストシリーズプラグインには、シリーズを簡単に作成および管理できるようにするユーザーフレンドリーなインターフェイスが付属しています。ポストシリーズプラグインは、WordPressテーマでシームレスに動作するように設計されています。ただし、プラグインのドキュメントを確認するか、確認のために開発者に連絡することをお勧めします。

    WordPressに利用できる無料のポストシリーズプラグインはありますか? WordPressで利用可能なプラグイン。ただし、無料のプラグインは、プレミアムプラグインほど多くの機能やサポートを提供しない場合があることに留意してください。あなたのニーズと予算に最適なプラグインを常に選択してください。

以上がWordPress用のポストシリーズプラグインを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。