問題
カスタム投稿タイプはデフォルトではping送信されない。
またカスタム投稿タイプのRSSは、{サイトURL}/{カスタム投稿タイプ}/feed には出力されるが、標準の{サイトURL}/feed には出力されない。
そこで、ping送信とRSS出力にフックを追加し、問題を解決する。
手順
functions.phpへ以下のメソッドと処理を追加する。
ping送信
カスタム投稿タイプの記事が投稿されたら、10分後にping送信する予約を行う。
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);
wp_schedule_single_event()
指定時刻に指定アクションを実行するメソッド。
第1引数に時刻、第2引数にアクション名、第3引数にアクションへ渡したい値を指定する。
アクションは、サイトにアクセスされたタイミングで指定時刻を過ぎていると実行される。
add_action()
特定のアクションに処理をフックするメソッド。
第1引数に処理を追加するアクション名、第2引数にフックするメソッド名、第3引数に優先順(小さい値が優先)を指定する。
標準RSS出力
RSSにカスタム投稿タイプの記事を追加する。
function myfeed_request($qv) { if (isset($qv['feed']) && !isset($qv['post_type'])) $qv['post_type'] = array('{カスタム投稿タイプ}'); return $qv; } add_filter('request', 'myfeed_request');
add_filter()
データ登録や表示などの特定フィルターに処理をフックするメソッド。
第1引数に処理を追加するフィルター名、第2引数にフックするメソッド名を指定する。