在WordPress中,文本小部件的内容存储在哪里?

3
在WordPress中,当我们在侧边栏创建一个文本小工具时,该文本的内容保存在变量或数据库中?
如果是变量,那是哪个变量?
如果是数据库,那是哪个表?
感谢任何帮助。
更新:
我的目标是创建一个插件,检查用户是否在其网站上创建了文本小工具。如果有,我想让插件获取其内容,将其发送到我的服务器,经过我的拼写检查器处理后,将更新的内容带回并替换文本小部件的旧内容。
所以,这就是为什么我想知道如何访问由网站所有者输入的文本小工具的确切内容。
1个回答

8

Text Widget的内容以序列化形式存储在wp_options表中的option_name > widget_text下。

您可以使用以下MySQL查询语句来获得该内容:

SELECT * FROM `wp_options` WHERE `option_name` = 'widget_text' 

更新

如果你只想获取文本小部件的内容,那么你需要创建一个自定义函数来返回内容,前提是你知道标题。

以下是代码:

function abc_getWidgetContentbyTitle($widget_title)
{
    $contect = '';
    $widgets = get_option('widget_text');
    if (!empty($widgets)):
        foreach ($widgets as $widget)
        {
            if ((!empty($widget['title'])) && $widget['title'] == $widget_title):
                $contect = $widget['text'];
            endif;
        }
    endif;
    return $contect;
}

代码放在您的活动子主题(或主题)的function.php文件中。也可以放在任何插件php文件中。

用法:

echo abc_getWidgetContentbyTitle('some txt widget 1'); //replace it with your title.

代码经过测试,完全可用。

请注意:我假设您已经拥有类似于这样的值。


更新 (阅读了您的确切要求后)

您可以使用widget_update_callback钩子来获取用户输入的内容,然后进行拼写检查并用更新后的内容替换它。

下面是一个例子:

add_filter('widget_update_callback', function( $instance, $new, $old, $obj )
{
    if ('text' === $obj->id_base && !empty($instance['text']))
    {
        $title = $instance['title'];
        $content = $instance['text'];

        //...
        //Now do your stuff and update $content.
        //...

        $instance['title'] = $title;
        $instance['text'] = $content;
    }

    return $instance;
}, 10, 4);

代码放在您活动的子主题(或主题)的function.php文件中。也可以放在任何插件php文件中。
该代码已经过测试并且完全可用。

参考:


除了在文本小部件中输入的内容之外,该列中还有很多其他文本。是否有一种方法可以摆脱它或另一个表格,在该表格中保存内容而不包含该列中的其他任何内容? - Grey-lover
很抱歉,我不知道文本小部件的标题,因为它们将是用户输入。有时甚至可能没有标题。有什么解决办法吗? - Grey-lover
你能否在问题中解释清楚你想要做什么,这将有助于找到最佳的解决方案。 - Raunak Gupta
我已经更新了我的问题并添加了更多细节,您想要检查一下吗? - Grey-lover
非常感谢你,你让我的一天变得美好。 - Grey-lover
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接