我的 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 插件在用户部分无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 数据库和 WP 迁移

一些 Woocommerce 客户未显示在客户部分

无法在 LOCALHOST 上安装 woocommerce 插件

通过解析数据部分来减少加载时间

我无法在 localhost 上激活我的 WordPress 插件

WP安装后,添加插件和主题都不能正常安装——无法创建目录,请问是啥原因,要如何解决?