Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在wordpress';仪表板_Php_Wordpress_Backend_Dashboard_Custom Backend - Fatal编程技术网

Php 如何在wordpress';仪表板

Php 如何在wordpress';仪表板,php,wordpress,backend,dashboard,custom-backend,Php,Wordpress,Backend,Dashboard,Custom Backend,我想知道是否可以在wordpress的仪表板中添加一个特定的文本小部件($id)或一个完整的动态工具条($id) 实际上,我只需要客户端在仪表板上编辑文本小部件的文本,而不必进入菜单“外观>小部件”-此部分对于此用户角色是隐藏的 如果您能在这里留下一些链接或代码,我将不胜感激。 提前感谢为了解决这个问题,我的研究让我: 以下只是基于始终优秀的代码的概念证明(在Q aboutcontrol\u回调中) 仪表板小部件显示选定文本小部件的标题,它显示“内容…”,但应为“标题…” 其配置屏幕

我想知道是否可以在wordpress的仪表板中添加一个特定的文本小部件($id)或一个完整的动态工具条($id)

实际上,我只需要客户端在仪表板上编辑文本小部件的文本,而不必进入菜单“外观>小部件”-此部分对于此用户角色是隐藏的

如果您能在这里留下一些链接或代码,我将不胜感激。

提前感谢

为了解决这个问题,我的研究让我:

以下只是基于始终优秀的代码的概念证明(在Q about
control\u回调中)

仪表板小部件显示选定文本小部件的标题,它显示“内容…”,但应为“标题…”


其配置屏幕显示一个下拉列表,其中包含所有侧栏的所有文本小部件:


这是外观>小部件屏幕


现在,剩下要实现的是一个编辑界面(文本输入等)和在选项
窗口小部件\u text
中保存适当的值,使用:
update\u选项('widget\u text',$a\u非常好\u结构化\u数组\u否则\u东西\u会损坏)


你好,brasofilo,谢谢你的代码和参考资料。事实上,我理解这段代码在做什么,但我不能继续使用update_选项('widget-text',$awwl_structured_array);密码,所以我必须放弃。我已经搜索过了,但没有找到任何有用的链接,这就是我开始这个话题的原因。十年后谢谢你,我知道!但是,谢谢您的回复。:)@NunoMarques,这些年来的惊喜元素赋予了它一种特殊的味道,thx!
<?php
/*
Plugin Name: Dashboard Widget to deal with Text Widgets
Plugin URI: http://stackoverflow.com/q/14898302/1287812
Description: based on Bainternet plugin https://wordpress.stackexchange.com/q/77830/12615
Version: 0.1
Author: brasofilo
Author URI: https://wordpress.stackexchange.com/users/12615/brasofilo
*/

// Register widget
add_action( 'wp_dashboard_setup', 'add_dashboard_widget_wpse_77830' );

function add_dashboard_widget_wpse_77830() 
{
    wp_add_dashboard_widget(
        'dashboard_widget_wpse_77830', 
        'Text Widgets', 
        'dashboard_widget_wpse_77830', 
        'dashboard_widget_wpse_77830_handle'
    );
}

// Show widget
function dashboard_widget_wpse_77830() 
{
    //get saved data
    if ( !$widget_options = get_option( 'my_dashboard_widget_options' ) )
        $widget_options = array();

    $saved_txt_widget = isset( $widget_options['txt_widget'] ) ? $widget_options['txt_widget'] : '';
    echo "
    <p><strong>Content of the Widget</strong></p>
    <div class='txt_widget_class_wrap'>
        <label style='background:#ccc;'>&nbsp; {$saved_txt_widget}</label>
    </div>
    ";
}

// Configure and update widget
function dashboard_widget_wpse_77830_handle()
{

    // Get saved data
    if ( !$widget_options = get_option( 'my_dashboard_widget_options' ) )
        $widget_options = array();

    // Process update
    if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['my_dashboard_widget_options']) ) 
    {
        // Minor validation
        $widget_options['txt_widget'] = wp_kses( $_POST['my_dashboard_widget_options']['txt_widget'], array() );
        // Save update
        update_option( 'my_dashboard_widget_options', $widget_options );
    }

    // Set defaults  
    if( !isset( $widget_options['txt_widget'] ) )
        $widget_options['txt_widget'] = ''; //you can set the default

    // Get Widget Text
    $txt = get_option( 'widget_text' );
    // Not necessary in the array
    unset($txt['_multiwidget']);

    // Start HTML
    echo "
    <p><strong>Available Text Widgets</strong></p>
    <div class='txt_widget_class_wrap'>
        <label>Title</label>
        <select name='my_dashboard_widget_options[txt_widget]' id='txt_widget'>";

    // Print options
    foreach( $txt as $t )
    {
        printf(
            '<option value="%s" %s>%s</option>',
            $t['title'],
            selected( $widget_options['txt_widget'], $t['title'], false ),
            $t['title']
            );

    }

    // End HTML
    echo "
           </select>
       </div>
       ";
}