wordpress小工具到底存放在哪里?

wordpress页面布局有2件神器:容器(sidebar)、小工具(widget)。容器一般在主题中定义,小工具在主题或者插件中都可定义。在切换主题时,小工具还存在吗?它的参数还保存着吗?存在哪里?有时候,很容易迷惑。

mmexport1470669070755

后台小工具页面,画面分3块区域:可用挂件区、容器区、垃圾箱(未使用的小工具区)。

有时候,容器中不想使用某个挂件了,又不想删除它,因为挂件的参数很多,配起来很辛苦地,说不定以后还要用这个小挂件,这时可以将它拖到垃圾箱,表示不使用它,但是保留它的参数。

这个“垃圾箱”区域可以看成是一个特殊的容器,拖到它里面的小工具不会显示。在这个特殊容器与普通容器之间拖动挂件时,挂件的参数不会丢失。

看个例子。在插件中定义了小工具w1,在主题A中定义了容器s和小工具w2,在管理后台我们将w1,w2都拖放到容器s中,浏览网页,侧边栏显示了w1、w2的内容,看起一切正常。

切换主题到B中,后台跑到小工具那里年,你会发现w1现在属于“未使用的小工具”,w2未看到,如果清除无效挂件w1,切回主题A一看,w1没了、w2还在,如何解释?

w1是插件级挂件,w2是主题级挂件,所以当A切换到B时,插件级挂件w1的定义还在,但是B中没有使用它了(即容器中没有w1),所以它被放到“未使用小挂件”区了。

可见,在插件中定义的挂件,切换主题时,很容易变成“未使用小挂件”。

一个容器可以容纳多个小挂件,那么,这种对应关系以及小挂件的配置参数保存在哪里呢?

当把小挂件往容器中拖时,底层会通过函数

update_option( ‘sidebars_widgets’, $sidebars_widgets ) 将所有容器与挂件的对应关系(如下)作为一个整体存放在wp_options表项中,参数$sidebars_widgets形如

(
  [wp_inactive_widgets] => Array
  (
    [0] => categories-4
    [1] => nav_menu-2
  )

  [widget_sitesidebar] => Array
  (
    [0] => widget_searchbox-2
    [1] => hs_widget-7   /* 表示第7号hs_widget小挂件 */
  )

  ...

  [array_version] => 3
)

当保存某个hs_widget类小挂件的参数,点保存时,通过函数

update_option( ‘hs_widget’, $settings )将此类小挂件的所有实例参数作为一个整体保存在wp_options表中,参数$settings形如

(
  [5] => Array
  (
    [title] => Products
    [number_products] => 3
  )

  /* 第7号hs_widget小挂件的参数 */
  [7] => Array
  (
    [title] => Products
    [number_products] => 1
  )

  [_multiwidget] => 1
)

《wordpress小工具到底存放在哪里?》有3个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注