サポート » 使い方全般 » マルチサイトの固定ページにショートコードを使用したい

  • 解決済 kazuxtaka

    (@kazuxtaka)


    いつもお世話になっております。

    現在、マルチサイトの構築を行っています。
    親の管理者が子サイトを作成し、
    子サイトごとの管理者が子サイトを管理できるようなものを想定しています。

    子サイトの固定ページにcontact form 7のお問い合わせフォームを挿入したく、
    ショートコードを作成しました。
    [contact-form-7 id="89" title="お問い合わせ"]
    最終的には、このショートコードを固定ページの編集画面から入力するだけで、
    子サイトごとにお問い合わせフォームを設置できるようにしたいのです。

    マルチサイトではデフォルトで入っているコンテンツ部分を
    <?php the_content(); ?>
    を使用して表示させることができない、ような記事を見つけました。実際表示されませんでした。
    固定ページのIDやスラッグから本文を取得して表示させることはできたのですが、
    それではショートコードがただの文字列になって表示されてしまいます。

    そこで、固定ページ用のテーマファイルを作成し、
    <?php echo do_shortcode('[contact-form-7 id="89" title="お問い合わせ"]'); ?>
    での挿入を試みたのですが、それでは子サイトごとにテーマを編集して回らなければならなくなります。

    固定ページに入力欄を作る等してショートコードを取得し、
    テーマにはdo_shortcodeを記載しておき、取得したショートコードが中入るようなものが作れないでしょうか。
    <?php echo do_shortcode('【子サイトごとの取得したショートコードが入る】'); ?>

    上記のような方法でなくとも同様のことが実現できる方法があればご教示いただきたいです。
    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • CG

    (@du-bist-der-lenz)

    親サイトで作ったフォームを、子サイトで使うということでしょうが、そのフォームに送られたフィードバックは、どれが受け取ることになるのでしょう。

    kazuxtaka

    (@kazuxtaka)

    CG 様
    ご返信ありがとうございます。
    フォームの作成は子サイトごとで行う予定です。

    地域ポータルサイトのようなものを想定しており、
    運営元が店舗用の子サイトを作成し、子サイト内でフォームを作成できればと考えております。
    contact form 7のデフォルトで作られるフォームには、
    子サイト名や子サイトの管理者メールアドレスから
    フォームの内容やメッセージ等ある程度そのまま使えるように変更を行っています。

    CG

    (@du-bist-der-lenz)

    フォームの作成は子サイトで各々行うのでしたら、例えば、「今月はこのフォームを使います。店舗名は各々変更して下さい。」といった感じで、フォームのテンプレートだけを共有したらどうでしょう。
    マルチサイト運営でもあることだから。

    kazuxtakaさん
    「apply_filters(‘the_content’,content$)」を私は使ってます。
    ※テキストをコンテンツに変換できます。

    カスタムフィールドを利用して使ってますが(下)

    
    <?php echo apply_filters('the_content', get_post_meta($post->ID, 'カスタムフィールド', true)); ?>
    

    もし、標準コンテンツを使うのであれば、下記の感じでいかがでしょうか?

    
    <?php echo apply_filters('the_content', $post -> post_content); ?>
    

    子サイトや親サイトの物を読み込みたいのであれば、部分的にスイッチをかければ、問題ないかと思います。

    
    switch_to_blog( 1 );//サイトを指定サイトへ切替※数字はブログIDです。
    

    意味合い的に合ってますでしょうか?

    オプションページなどを利用すれば、全サイト共通のショートコードなども可能ですよ。

    CG 様、mura0403 様

    ご返信がおくれ申し訳ございませんでした。
    mura0403 様の「apply_filters(‘the_content’,content$)」というもの、
    調べつつやってみたのですが、なかなかうまく行かず、
    調べている過程でコンタクトフォームのid、titleを自動で取得し
    do_shortcodeで表示させる方法を見つけ、試したところ無事表示ができました。

    ▽参考【WordPress】Contact Form 7をテンプレート内で表示する
    http://qiita.com/konweb/items/1dfda94e16e587aac710

    <?php
    $get_form = get_posts(array('post_type' => 'wpcf7_contact_form', 'posts_per_page' => -1))[0];
    ?>
    <div class="entry-content">
      <?php echo do_shortcode( '[contact-form-7 id="'.$get_form->ID.'" title="'.$get_form->post_title.'"]' ); ?> 
    </div>

    ひとまずはこちらの方法で進めてみようかと思います。
    今回ご教示いただいた方法、スイッチで切り替える方法も他の機会で試してみたいと思います。
    いつもご助言ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。