inc2734 / mw-wp-form

69 stars 46 forks source link

Rest API 経由で固定ページに書かれたショートコードを呼び出すとショートコードがそのまま表示される #118

Open KentaroTanida opened 3 years ago

KentaroTanida commented 3 years ago

環境のバージョンは次の通りです:

はじまして。 タイトルの通り、「Rest API 経由で固定ページに書かれたショートコードを呼び出すとショートコードがそのまま表示」され困っています。

固定ページに下記の mw-wp-form のショートコードを貼り付けて、プレビューでフォームが表示されることは確認致しました。

[mwform_formkey key="3975"]

次に、Rest API 経由でコールバック関数を呼び出し、ショートコードが動作することを確認した固定ページを関数内の wp_query で呼び出したところ mw-wp-form のショートコードが展開されることなくショートコードがそのまま表示されました。

Rest APIのcallback関数:

function getPost($request){
        $body = json_decode($request->get_body(),true);

        $query = new WP_Query(array(
            'post_type'=>$body['post_type'], // page
            'p'=>$body['id'] // 固定ページのID
        ));
        if($query->have_posts()){
            while($query->have_posts()){
                $query->the_post();
                global $post;
                ob_start();
                the_content(); // 固定ページのコンテンツを表示
                $content = ob_get_clean();
            }
        }
        return new WP_REST_Response(array('status'=>1,'content'=>$content), 200);
}

$contentの中身:

[mwform_formkey key=”3975″]

そこで、テキストを返す簡単なショートコードを作成し固定ページに貼り付け、同様にRestAPIで呼び出したところ、ショートコードのテキストが表示されることを確認いたしました。

固定ページに貼り付けし直したショートコード:

function hello() {
  $text = "Hello World!!";
  return $text;
}
add_shortcode( 'testcode', 'hello');

$contentの中身:

Hello World!!

Rest API を経由した形でmw-wp-form のショートコードを使う場合、なにか私自身が見落としている箇所があると考えています。 実装上誤っている点やその他ご指摘をいただけると助かります。