質問: wp_signon($login_info, false); if( is_wp_error($user_info) ) { wp_redirect( home url() ); exit; } wp_redirect( get_the_permalink($query_p).'/'); exit; } add_filter('parse_query','facebookCrawler'); ``` 上記コードをfunctions.phpに記述したうえで、 chromeでユーザーエージェントを「facebookexternalhit」に偽装しアクセスしたところ、 ブラウザでの挙動は狙ったとおりになりました。ですが、facebookのobjectデバッガー(https://developers.facebook.com/tools/debug/og/object/)での結果は、 「入力URLのパース中にエラーが発生しました。キャッシュまたはスクレイピングされたデータはありません。」 と表示されてしまい、正常に読み込めませんでした。 この結果に対しての予測として、 **クローラはクッキー情報を保持できない。従って、一度ログイン処理させてもリダイレクトが発生した時点でクッキー情報を失ってしまい、アクセスに失敗した。** と考えたのですが、デバッガの結果を見るとステータスコードが404ではなく、302だったのでイマイチピンと来ていません。 ユーザーエージェントを偽装すれば予約投稿記事が見れてしまうという欠点は承知の上です。 **1ブラウザの挙動と同じ通りに行かないのは予想した通り、クローラがクッキー情報を持てないからなのか** **2そもそもfacebookにWPの予約投稿ステータスの予約投稿する方法は存在するのかの2点をご教示いただけるとありがたいです。** 知見がある方、何卒お力添えのほど、よろしくお願いいたします。
回答: `pre_get_posts`フック時にUAを確認してfacebookならwp_signonして、リダイレクトしなければどうでしょう。 もしくは、`'post_status'`に `array( 'publish', 'draft', 'future', 'private' )` とかを `pre_get_posts`フックで書き換えるとか。 【関数リファレンス/WP Query - WordPress Codex 日本語版】 https://wpdocs.osdn.jp/関数リファレンス/WP_Query#ステータスのパラメータ