我的 WordPress 插件在用户部分无法正常工作
Posted
技术标签:
【中文标题】我的 WordPress 插件在用户部分无法正常工作【英文标题】:My WordPress plugin does not work properly in user section 【发布时间】:2020-12-08 07:17:27 【问题描述】:我编写了一个非常简单的代码,它应该从 WordPress 管理部分读取几个字段并将它们显示在我放置公司代码的页面上,但问题是只有字段更改显示给管理员和用户看不到任何变化。没有
我的插件中有两个,我把 php 代码放在这里
第一部分:admin-page.php
if ( isset($_POST['submit']) )
$currency_update_date = isset($_POST['turksend_currency_update_date']) ? $_POST['turksend_currency_update_date'] : '';
update_option('turksend_currency_update_date', $currency_update_date);
<form method="POST">
<table class="form-table">
<tr>
<th scope="row">
<label for="turksend_currency_update_date">Date Update</label>
</th>
<td>
<input name="turksend_currency_update_date" type="text" id="turksend_currency_update_date" value="<?php echo get_option('turksend_currency_update_date', ''); ?>" class="regular-text code">
</td>
</tr>
<tr>
</table>
<p class="submit">
<input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e('Save Changes'); ?>">
</p>
</form>
第二部分:turksend-calculator.php
<?php
/**
* Plugin Name: ....
* Plugin URI: ....
* Description: .....
* Version: 1.0
* Author: ...
* Author URI: .....
*/
global $turksend_db_version;
$turksend_db_version = '1.0';
/* Install plugin - Create options */
function turksend_install()
global $turksend_db_version;
add_option( 'turksend_db_version', $turksend_db_version );
add_option( 'turksend_currency_update_date', '' );
register_activation_hook( __FILE__, 'turksend_install' );
/* Uninstall plugin - Delete options */
function turksend_uninstall()
global $turksend_db_version;
delete_option( 'turksend_db_version' );
delete_option( 'turksend_currency_update_date' );
register_deactivation_hook( __FILE__, 'turksend_uninstall' );
register_uninstall_hook( __FILE__, 'turksend_uninstall' );
/* Add admin menu page */
function turksend_init()
require_once plugin_dir_path(__FILE__) . 'admin-page.php';
function turksend_register_options_page()
add_menu_page(
'Calculate',
'Calculate',
'manage_options',
'turksend',
'turksend_init',
'dashicons-plus'
);
add_action('admin_menu', 'turksend_register_options_page');
/* Add plugin page settings link */
add_filter('plugin_action_links_'.plugin_basename(__FILE__), 'turksend_add_plugin_page_settings_link');
function turksend_add_plugin_page_settings_link ( $links )
$links[] = '<a href="' . admin_url( 'admin.php?page=turksend' ) . '">' . __('Settings') . '</a>';
return $links;
function turksend_canculate()
echo get_option('turksend_currency_update_date');
add_shortcode('turksend-canculate', 'turksend_canculate');
一切都正确,更改不会只显示给未登录网站的用户
【问题讨论】:
可以分享一下页面吗? 所以你的插件在前端显示了一个表单,其中包含来自 Wp-admin 的值,这样做的目标是什么?任何访问者都可以更改这些字段吗? 我会把网站地址发给你,但是网站的语言是波斯语 turksend.com “更改不会只显示给未登录网站的用户” - 听起来问题可能是由某种缓存插件引起的……? 【参考方案1】:function turksend_canculate()
echo get_option('turksend_currency_update_date');
你有错误,你必须返回数据,而不是打印
function bartag_func( $atts )
$a = shortcode_atts( array(
'foo' => 'something',
'bar' => 'something else',
), $atts );
return "foo = $a['foo']";
add_shortcode( 'bartag', 'bartag_func' );
https://codex.wordpress.org/Shortcode_API
【讨论】:
以上是关于我的 WordPress 插件在用户部分无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
无法在 LOCALHOST 上安装 woocommerce 插件