我正在编写我的第一个WP插件,所以我从简单开始。我想我会创建一个简单的插件,将Google Analytics代码段注入页面头部。除了插件设置页面为空白外,一切似乎都有效。应该有一个简单的表单,我可以输入Analytics UA,但页面完全空白。我一遍又一遍地查看代码,但我没有看到问题。
removeFromCurrentIsObject
答案 0 :(得分:0)
只需在cc_analytics_menu
中重命名add_menu_page
参数。
您的代码:
add_menu_page('CC Analytics', 'CC Analytics', 'administrator', 'cc_analytics_settings_page', 'cc_analytics_menu', plugins_url('analytics/images/analytics.png'));
修改代码:
将cc_analytics_menu
重命名为cc_analytics_menu_function
。
同时重命名回调函数:
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 }
答案 1 :(得分:0)
我解决了这个问题,而不是使用PHP变量调用Google Analytics代码,从“设置”页面的表单中调用该函数。
ga('create', '<?php echo get_option('accountant_name', ''); ?>', 'auto');