サポート » 使い方全般 » 自作ショートコードへの関連付けについて

  • お世話になります。
    記事中に広告を設置するためのショートコードをfunction.phpで設定しました。
    そのショートコードに、設定ページから入力した値を反映させるコードについて質問です。

    まずはショートコードを以下のように作りました。

    function showads() {
    return $html;
    }
    //仮にreturnが返す変数を$htmlとします

    add_shortcode(‘ad’, ‘showads’);

    そして管理画面から広告のアドレスを入力するための設定ページを作りました。
    それが以下のコードです。

    add_action(‘admin_menu’, ‘ad_menu’);

    function ad_menu() {
    add_options_page(‘広告管理’, ‘広告管理’, ‘manage_options’, ‘ad_menu’, ‘ad_options_page’);
    add_action( ‘admin_init’, ‘register_ad_settings’ );
    }

    function register_ad_settings() {
    register_setting( ‘ad-settings-group’, ‘ad_url’ );
    }

    function ad_options_page() {
    ?>
    <div class=”wrap”>
    <h2>広告コード設定</h2>
    <form method=”post” action=”options.php”>
    <?php
    settings_fields( ‘ad-settings-group’ );
    do_settings_sections( ‘ad-settings-group’ );
    ?>
    <table class=”form-table”>
    <tbody>
    <tr>
    <th scope=”row”>
    <label for=”ad_url”>広告コード</label>
    </th>
    <td><input type=”text” id=”ad_url” class=”regular-text” name=”ad_url” value=”<?php echo get_option(‘ad_url’); ?>”></td>
    </tr>

    </tbody>
    </table>
    <?php submit_button(); ?>
    </form>
    </div>
    <?php
    }

    この設定画面で入力したurlをショートコードに反映させるにはどうしたらいいのでしょうか?
    $html = get_optionを使うことはなんとなくわかるのですが、どうしてもうまくいきません。

    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 広告管理の管理ページはちゃんと作成できているようです。

    $ad_url = get_option( 'ad_url' );

    で管理画面で入力した内容を取得できるので、あとはそれをどう表示するか showads 関数の中で組み立てるだけだと思いますよ。

    // 例
    function showads() {
    	$ad_url = get_option( 'ad_url' );
    	$html = '<a href="' . esc_url( $ad_url ) . '">広告</a>';
    	return $html;
    }

    広告コードがどういうものなのか、入力されるものはURLなのか、それとも一意の文字列なのか、さらに表示したいものがどういう形式なのか、といった事がわからないので、また、WordPress の質問とも離れることなので、あとはご自分で工夫していただくべきことだと思います。

    助言できることしては、

    register_setting( 'ad-settings-group', 'ad_url' );

    について。
    register_setting 関数は第三引数で、入力された値の無蓋化をする関数を指定できます。
    関数リファレンス/register setting – WordPress Codex 日本語版

    例えば、保存されるべき値がURLである場合は、

    register_setting( 'ad-settings-group', 'ad_url', 'esc_url_raw' );

    とすれば、安全なURL文字列として保存されます。(文字列がURLとしての安全ということであって、リンク先が安全なページ、ということではありません。)
    参考: データ検証 – WordPress Codex 日本語版

    mimosafa様

    遅くなってしまいましたが、ありがとうございます!!

    esc_urlってなんだろう?と思ったら、無害化する関数なんですね。
    勉強になりました。

    おかげさまで、無事に広告を表示することができました。

    丁寧に解説いただき、ほんとうにありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「自作ショートコードへの関連付けについて」には新たに返信することはできません。