1

我写了一个非常简单的代码,它应该从 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');

一切都正确,更改不会仅显示给未登录网站的用户

4

1 回答 1

0
function turksend_canculate() { 
echo get_option('turksend_currency_update_date');
}

you have an error, you must return data, not print

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

于 2020-08-19T07:50:38.377 回答