在用户配置文件中显示全局消息,仅在WordPress后端的管理员输入字段中显示

时间:2016-06-21 作者:NewUser

我尝试在所有用户配置文件页面(…/wp admin/profile.php)上显示一段文本(没有插件),例如“每日报价:一些文本”。

此文本应可从管理员配置文件管理/编辑。在管理员配置文件页面中应该有一个文本输入字段,我可以在其中更改文本并保存。

从昨天起,我就找不到任何实现这一目标的线索。我找到了很多教程来为配置文件页面创建自定义用户字段,但没有我需要的。

到目前为止,我能够创建一个文本输入字段,在该字段中,我可以将文本(输入)保存在数据库中,并仅在admins profile页面中显示,其中包括:

function add_qoute_of_the_day_backend( $user ) { 
// Visible only for admins
if( current_user_can( \'administrator\' ) ) { 
?>
<div class="visible-only-for-admin">
    <h3>Quote of the Day Input Field</h3>
    <table class="form-table" >
        <tr>
            <th><label for="qoute_of_the_day">Qoute of the Day</label></th>
            <td><input type="text" name="qoute_of_the_day" value="<?php echo esc_attr(get_the_author_meta( \'qoute_of_the_day\', $user->ID )); ?>" class="regular-text" /></td>
        </tr>
    </table>
</div>
<?php } ?>
<?php }
add_action( \'show_user_profile\', \'add_qoute_of_the_day_backend\', 10 );
add_action( \'edit_user_profile\', \'add_qoute_of_the_day_backend\', 10 );

function save_qoute_of_the_day_backend( $user_id ) {
    if ( !current_user_can( \'edit_user\', $user_id ) )
    return false;       
    update_user_meta( $user_id,\'qoute_of_the_day\', sanitize_text_field ( $_POST[\'qoute_of_the_day\'] ) );
}
add_action( \'personal_options_update\', \'save_qoute_of_the_day_backend\' );
add_action( \'edit_user_profile_update\', \'save_qoute_of_the_day_backend\' );
上面的代码可以工作,但我如何在所有其他用户配置文件中以文本形式显示管理员的输入?是否有任何方法可以只为管理员角色创建一个简单的输入字段,并在所有配置文件中显示输入?

Visual - what im trying to achive:

管理员配置文件页面中的输入字段:

enter image description here

在所有其他用户配置文件中显示文本:

enter image description here

Any help would be greatly appreciated

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

您只需将功能检查“向内”移动即可:

function wpse_230369_quote_of_the_day( $user ) { 
    $quote = esc_attr( get_option( \'quote_of_the_day\' ) );
    ?>

<div class="visible-only-for-admin">
    <h3>Quote of the Day Input Field</h3>
    <table class="form-table" >
        <tr>
            <th><label for="quote_of_the_day">Quote of the Day</label></th>
            <td>
                <?php if ( current_user_can( \'administrator\' ) ) : ?>

                    <input type="text" name="quote_of_the_day" value="<?php echo $quote ?>" class="regular-text" />

                <?php else : ?>

                    <?php echo $quote ?>

                <?php endif ?>
            </td>
        </tr>
    </table>
</div>

<?php
}

add_action( \'show_user_profile\', \'wpse_230369_quote_of_the_day\', 10 );
add_action( \'edit_user_profile\', \'wpse_230369_quote_of_the_day\', 10 );

function wpse_230369_save_quote_of_the_day( $user_id ) {
    if ( isset( $_POST[\'quote_of_the_day\'] ) && current_user_can( \'administrator\' ) )
        update_option( \'quote_of_the_day\', sanitize_text_field( wp_unslash( $_POST[\'quote_of_the_day\'] ) ) );
}

add_action( \'edit_user_profile_update\', \'wpse_230369_save_quote_of_the_day\' );
add_action( \'personal_options_update\',  \'wpse_230369_save_quote_of_the_day\' );

相关推荐

WP_COMMENTS表真的很大,正在慢慢加载/wp-admin/dit-Comments.php

我们的wp\\u注释有数百万行。当我们加载时/wp/wp-admin/edit-comments.php 它将超时。看看mysql,这个简单的查询需要很长时间SELECT wp_comments.comment_ID FROM wp_comments WHERE ( ( comment_approved = \'0\' OR comment_approved = \'1\' ) ) AND comment_type IN (\'pingback\', \'trackback\')&