【问题标题】:My WordPress plugin does not work properly in user section我的 WordPress 插件在用户部分无法正常工作
【发布时间】: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 的值,这样做的目标是什么?任何访问者都可以更改这些字段吗?
  • 我会把网站地址发给你,但是网站的语言是波斯语
  • “更改不会只显示给未登录网站的用户” - 听起来问题可能是由某种缓存插件引起的……?

标签: php wordpress wordpress-plugin-creation


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2017-01-08
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多