【WordPress】カスタム投稿タイプへ投稿したものがブログランキングなどに反映されないときは

公開日: 更新日: Wordpress
Knowledge Base トラブル 対処




WordPressで通常の投稿や固定ページとは違う記事の集まりができる【カスタム投稿タイプ】。Wordpressの使い方をいろいろ調べていると、カスタムフィールドと並んで興味を持つ機能です。

で、早速CPTUI

などのプラグインを使って意味不明な内容を読解しながら作成完了!!いざ投稿をば!!とやってみたものの、いつもは投稿と同時に情報が収集されているブログランキングやブログサークルなどのコミュニティへ反映されない、なんで???と思った方へ対処方法を紹介します。

ブログランキングやコミュニティサイトへ記事が反映されるしくみ

前置きとして、なぜ反映されないのか?について簡単に説明しますね。

ブログランキングなどでは、ブログというインターネットツールで記事を投稿したときに必ず行われる2つのアクションを元に新しい記事を反映させています。

使われているのは【Ping送信機能】と【RSS FEED】です。仕組みとしては、記事が投稿されたときに送信される【Ping】送信の情報を元に、【RSS FEED】から情報を取得して表示するようになっています(サイトの仕組みによってはPing送信後実際のページから情報を収集するものもあります)。

WordPressにもこの機能があることから、ワードプレスは「ブログサイト作成ツール」と呼ばれているのです。投稿を通知できるブログの機能と固定ページやブログにないコンテンツを作成できるHTMLサイトのような機能を両方持つツールということなんですね。

従って【Ping送信機能】と【RSS FEED】が動作していなければランキングなどには反映されないのです

カスタム投稿タイプの記事をランキングサイトなどへ反映する方法

カスタム投稿タイプは誰でも作れて、中にはプラグインでも勝手に作られるものです。そして、作成した経験のある方なら分かると思いますが、自身で都合のよい名前を設定できるようになっています。

そうなると、プラグインで作成されたデータまで【Ping送信機能】と【RSS FEED】が動作してしまい不都合が生じる場合もありますから初期状態でこの2つが機能しないようになっているのだと思われます。

であれば、このカスタム投稿はPing送信してくださいね、RSS Feedに情報を追加してくださいねと指示すればきちんと反映されるということになります。

これらを動作させるにはテーマのfunctions.phpへこれから紹介するコードを追加します。functions.phpは重要なファイルなので編集に失敗するとWordpressが正常に動作しなくなりますから気を付けて行ってください。

一応転ばぬ先の杖としてもしも、もしも不具合が発生したら・・・のための記事をリンクしておきます

カスタム投稿タイプで投稿した記事でPing送信機能を使う方法

下のコードをfunctions.phpへ挿入します

function カスタム投稿タイプ名_pings_at_publish( $post_id ) {
    wp_schedule_single_event( strtotime( '+10 min' ), 'do_pings', array( $post_id ) );
}
add_action( 'publish_カスタム投稿タイプ名', 'カスタム投稿タイプ名_pings_at_publish', 10, 1 );
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

「カスタム投稿タイプ名」の部分を修正します。

カスタム投稿タイプで投稿した記事をRSS FEEDへ追加する方法

下のコードをfunctions.phpへ挿入します

// functions.php
function myfeed_request($qv) {
  if (isset($qv['feed']) && !isset($qv['post_type']))
    $qv['post_type'] = array('投稿タイプ名1', '投稿タイプ名2');
  return $qv;
}
add_filter('request', 'myfeed_request');
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

上記のコードで「投稿タイプ名1」「投稿タイプ名2」のところに投稿タイプの名前(半角英数字)を入れます。もちろん1つだけなら「投稿タイプ名2」のところは削除すればいいし、数が多ければ「, '投稿タイプ名2'」の部分を増やせばOKです。

コードが完成したらテーマのfunctions.phpへ記述を追加すれば完了です
テストとして、RSSフィードを開いてみてくださいね(http://サイトURL/?feed=rss2で表示されます)
表示されない場合は投稿タイプの入力の問題だと思われますので確認してください。

おまけ こんな使い方もある

今回は反映させる方法を紹介しましたが、逆にこの機能を設定しなければブログランキングなどに記事は反映されませんから、投稿タイプごとに情報を送信した方がいいかどうかを決めて運用することでよりいろいろな内容を持つサイトを作成できるようになります。

また、普段は反映されるようにしておいて、この記事だけ機能を停止したいというときは

を使うことで実現できます。

いつでもご相談・サイトカスタマイズの依頼を受け付けています

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


【スポンサーリンク】