如何从外部微件访问微件数据?

时间:2016-09-23 作者:jrcollins

我正在尝试从小部件代码外部访问小部件的选项设置。

小部件的名称为:category_grid, 其名称为:widget_categories.

我尝试了以下代码,这是在另一个网站上回答问题时建议的,但它没有返回任何内容:

<?php
$options = get_option( \'widget_category_grid\' );
$cats = $options[\'widget_categories\'];
echo $cats;
?>

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

首先,没有小部件的数据这样的东西。这是因为一个小部件可能包含在站点的多个位置。因此,数据不属于小部件,而是属于该小部件的实例。因此,每个小部件都有一个ID。如果您想知道小部件实例的ID是什么,可以使用此代码在后端显示它。

add_action(\'in_widget_form\', \'wpse240327_get_widget_id\');

function wpse240327_get_widget_id($widget_instance) {
    if ($widget_instance->number=="__i__"){
        echo \'<p class="widget-id-message">\' . __(\'Save the widget to get its ID\',\'textdomain\') . \'</p>\';
        }
    else {
        echo \'<p class="widget-id-message">\' . __(\'The widget ID is:\',\'textdomain\') . \' \' . $widget_instance->id . \'</p>\';
        }
    }
请注意,如果您从侧边栏中删除小部件,然后再将其放回原处,则ID可能已更改。在任何情况下,要标识特定的小部件实例,您都需要此ID。ID有两个组件:名称和数字,您都需要:

my_widget_name_777
让我们把它分开:

$widget_name = \'my_widget_name\';
$widget_instance = \'777\';
现在,您需要访问存储所有数据的阵列。每个小部件都有自己的选项,其中包含该特定小部件的所有实例的数组。您可以这样访问它:

$widget_instances = get_option(\'widget_\' . $widget_name);
这将为您提供一个数组,其中包含键由数字组成的实例,因此您可以在以下位置获取数据:

$data = $widget_instances[$widget_instance];

相关推荐

Huge wp_options table

我有一个WP网站的问题。由于没有更多可用磁盘空间,网站崩溃。搜索时,我检测到wp\\U选项表大小为12GB,但大约只有1100行:有什么想法吗?提前感谢[UPDATE 1]如果我导出wp\\U选项表,拖放并导入,大小将减少到9,7mb:我没有机会用优化表OPTIMIZE TABLE wp_options 但如果再发生的话我会试试的[UPDATE 2]问题仍然存在。我试着OPTIMIZE TABLE wp_options;无结果: