2016-04-22 13 views
0

私は最初のWPプラグインを書いているので、私は簡単に始めています。私は、ページの先頭にGoogleアナリティクスのスニペットを挿入する簡単なプラグインを作成すると思いました。プラグインの設定ページが空白であることを除いて、すべて機能しているようです。 Analytics UAを入力できるシンプルなフォームが必要ですが、ページは完全に空白です。私はコードを何度も見てきましたが、私は問題を見ていません。Wordpressのプラグインの設定ページ

<?php 
    /* 
    Plugin Name: Analytics 
    Plugin URI: https://chriscather.wordpress.com 
    Description: Plugin for adding Google Analytics to website 
    Author: C. Cather 
    Version: 1.0 
    Author URI: https://chriscather.wordpress.com 
    */ 

add_action('admin_menu', 'cc_analytics_menu'); 

function cc_analytics_menu() { 
    add_menu_page('CC Analytics', 'CC Analytics', 'administrator', 'cc_analytics_settings_page', 'cc_analytics_menu', plugins_url('analytics/images/analytics.png')); 
} 

add_action('admin_init', 'cc_analytics_settings'); 

function cc_analytics_settings() { 
    register_setting('cc_analytics_settings_group', 'accountant_name'); 
} 

function cc_analytics_settings_page(){?> 
    <div class="wrap"> 
     <h2>Staff Details</h2> 
     <form method="post" action="options.php"> 
      <?php settings_fields('cc_analytics_settings_group'); ?> 
      <?php do_settings_sections('cc_analytics_settings_group'); ?> 
      <table class="form-table"> 
       <tr valign="top"> 
       <th scope="row">Accountant Name</th> 
       <td><input type="text" name="accountant_name" value="<?php echo esc_attr(get_option('accountant_name')); ?>" /></td> 
       </tr> 
      </table> 
      <?php submit_button(); ?> 
     </form> 
    </div> 
<?php } 

add_action('wp_head', 'cc_analytics'); 
    function cc_analytics() { ?> 
     <script> 
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 

      ga('create', "<?php cc_analytics_settings_group('accountant_name') ?>", 'auto'); 
      ga('send', 'pageview'); 

     </script> 
    <?php } 

答えて

0

私が代わりにGoogle Analyticsのコードで呼び出すためにPHP変数を使用することで問題を解決し、設定ページのフォームから関数を呼び出します。

ga('create', '<?php echo get_option('accountant_name', ''); ?>', 'auto'); 
0

だけadd_menu_pagecc_analytics_menu引数の名前を変更します。

あなたのコード:

add_menu_page('CC Analytics', 'CC Analytics', 'administrator', 'cc_analytics_settings_page', 'cc_analytics_menu', plugins_url('analytics/images/analytics.png')); 

修正コード:

cc_analytics_menu_functioncc_analytics_menuの名前を変更しました。

はまた、コールバック関数の名前を変更:

add_menu_page('CC Analytics', 'CC Analytics', 'administrator', 'cc_analytics_settings_page', 'cc_analytics_menu_function', plugins_url('analytics/images/analytics.png')); 

function cc_analytics_menu_function(){?> 
    <div class="wrap"> 
     <h2>Staff Details</h2> 
     <form method="post" action="options.php"> 
      <?php settings_fields('cc_analytics_settings_group'); ?> 
      <?php do_settings_sections('cc_analytics_settings_group'); ?> 
      <table class="form-table"> 
       <tr valign="top"> 
       <th scope="row">Accountant Name</th> 
       <td><input type="text" name="accountant_name" value="<?php echo esc_attr(get_option('accountant_name')); ?>" /></td> 
       </tr> 
      </table> 
      <?php submit_button(); ?> 
     </form> 
    </div> 
<?php } 

全プラグインコード:

<?php 
    /* 
    Plugin Name: Analytics 
    Plugin URI: https://chriscather.wordpress.com 
    Description: Plugin for adding Google Analytics to website 
    Author: C. Cather 
    Version: 1.0 
    Author URI: https://chriscather.wordpress.com 
    */ 

add_action('admin_menu', 'cc_analytics_menu'); 

function cc_analytics_menu() { 
    add_menu_page('CC Analytics', 'CC Analytics', 'administrator', 'cc_analytics_settings_page', 'cc_analytics_menu_function', plugins_url('analytics/images/analytics.png')); 
} 

add_action('admin_init', 'cc_analytics_settings'); 

function cc_analytics_settings() { 
    register_setting('cc_analytics_settings_group', 'accountant_name'); 
} 

function cc_analytics_menu_function(){?> 
    <div class="wrap"> 
     <h2>Staff Details</h2> 
     <form method="post" action="options.php"> 
      <?php settings_fields('cc_analytics_settings_group'); ?> 
      <?php do_settings_sections('cc_analytics_settings_group'); ?> 
      <table class="form-table"> 
       <tr valign="top"> 
       <th scope="row">Accountant Name</th> 
       <td><input type="text" name="accountant_name" value="<?php echo esc_attr(get_option('accountant_name')); ?>" /></td> 
       </tr> 
      </table> 
      <?php submit_button(); ?> 
     </form> 
    </div> 
<?php } 

add_action('wp_head', 'cc_analytics'); 
    function cc_analytics() { ?> 
     <script> 
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 

      ga('create', "<?php cc_analytics_settings_group('accountant_name') ?>", 'auto'); 
      ga('send', 'pageview'); 

     </script> 
    <?php } 
+0

フォームは現在、バックエンドに表示されます。しかし、私はちょうどJavaScriptコールのPHPコールを使用してページが破損していることに気づいた。ラメ。私はこの呼び出しを思いついたが、変数の作成方法がわからない。$ trackerCode = cc_analytics_menu_function(accountant_name); 'のような単純なものを試したが、それはページを壊した。 –

関連する問題