首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何保存放置在PluginDocumentSettingPanel中的复选框的状态

PluginDocumentSettingPanel是WordPress插件开发中的一个特殊类,用于在编辑文章页面添加自定义设置面板。它常用于为插件添加一些额外的选项或配置。

要保存放置在PluginDocumentSettingPanel中的复选框的状态,可以采取以下步骤:

  1. 在插件的初始化函数中,注册一个新的自定义字段来保存复选框的状态。可以使用register_meta函数来完成注册。具体代码如下:
代码语言:txt
复制
function my_plugin_init() {
    register_meta( 'post', 'my_checkbox_field', array(
        'type' => 'boolean',
        'single' => true,
        'show_in_rest' => true,
    ) );
}
add_action( 'init', 'my_plugin_init' );
  1. 在PluginDocumentSettingPanel中,使用wp.data库来获取和更新复选框的状态。可以通过getMeta和updateMeta来实现。具体代码如下:
代码语言:txt
复制
const { PluginDocumentSettingPanel } = wp.editPost;
const { useSelect, useDispatch } = wp.data;

function MyPluginDocumentSettingPanel() {
    const meta = useSelect( ( select ) => {
        return select( 'core/editor' ).getEditedPostAttribute( 'meta' );
    } );
    const { editPost } = useDispatch( 'core/editor' );

    const onChangeCheckbox = ( newValue ) => {
        editPost( { meta: { my_checkbox_field: newValue } } );
    };

    return (
        <PluginDocumentSettingPanel
            name="my-plugin-panel"
            title="My Plugin Settings"
            className="my-plugin-panel"
        >
            <label>
                <input
                    type="checkbox"
                    checked={ meta.my_checkbox_field || false }
                    onChange={ ( e ) => onChangeCheckbox( e.target.checked ) }
                />
                Enable Option
            </label>
        </PluginDocumentSettingPanel>
    );
}

wp.plugins.registerPlugin( 'my-plugin-document-panel', {
    render: MyPluginDocumentSettingPanel,
} );

在上述代码中,我们使用了wp.data库中的useSelect和useDispatch来获取和更新复选框的状态。

  1. 保存设置。在用户更改复选框状态后,通过updateMeta函数将状态保存到WordPress的数据库中。具体代码如下:
代码语言:txt
复制
const onChangeCheckbox = ( newValue ) => {
    editPost( { meta: { my_checkbox_field: newValue } } );
    wp.data.dispatch( 'core/editor' ).savePost();
};

通过以上步骤,就可以在PluginDocumentSettingPanel中保存复选框的状态了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

HTTP是不保存状态协议 如何保存用户状态

虽然 HTTP 协议本身是无状态,即每个请求都是相互独立,服务器不会保存客户端状态信息,但是可以通过以下方式来保存用户状态: 1....当服务器向客户端发送 HTTP 响应时,可以响应头中添加 Set-Cookie 字段,客户端收到响应后会将 Cookie 保存起来,然后在后续请求通过 Cookie 字段将信息发送给服务器,从而实现用户状态保存...Token 使用 Token 来保存用户状态,服务器在用户登录成功后生成一个 Token,并将 Token 返回给客户端,客户端在后续请求通过在请求头中携带 Token 来进行身份验证和状态保存。...URL 重写 URL 携带用户状态信息,例如在 URL 添加用户 ID 或者 Session ID 来标识用户,服务器可以通过解析 URL 来获取用户状态信息。...这些方式都是通过客户端或者服务器端保存一些标识信息来实现用户状态保存,从而在 HTTP 协议无状态基础上实现用户状态管理。 本文由 mdnice 多平台发布

36150

关于React状态保存研究

使用react搭配react-router做应用时候,你可能遇到这样问题,当我从第一个页面过渡到第二个页面,然后返回之后,发现之前页面的状态全部不见了,即回到了初始状态。...看上去效果十分好,既能保存状态,也能保存滚动条高度。...解决方案三:本地存储/redux数据仓库/参数传递 我把这三种方案归结为一种,因为实际上是离开列表组件时候保存当前状态,然后回到页面的时候根据之前保存状态来进行现场恢复而已。...效果和字路由方式相同,依然存在滚动高度不能保存问题。 滚动高度问题 下面来谈谈如何解决滚动高度问题,综合起来还是一种恢复现场方式。...尝试方案:react-keeper github上搜索看到了这个库,类似于react-router一个翻版,同时react-router基础上增加了类似于vue-routerkeep-alive

4.3K40
  • ViewPagerFragment状态保存哪些事

    destroyItem() 此方法用于销毁我们指定Fragment,其内部把当前Fragment状态根据下标保存到了 mSavedState 。...} // 调用 mFragmentManager 去保存Fragment 状态,并将其保存在了内部 mSavedState mSavedState.set(position...状态信息,并且以下标的方式进行了保存,当我们滑动 ViewPager 时,其会加载并初始化指定 position 所对应 Fragment ,并将缓存 Fragment 状态信息 set 进去...Fragment部分 通过上面的方式,我们可以简单知道 ViewPager 是如何帮我们进行状态还原与保存,那 Fragment 到底是什么时候去使用这个状态呢?...,主要原因是: Fragment 销毁时,会调用 destoryItem 方法,adapter内部会主动保存了当前 Fragment 状态,并以当前下标作为 key 存到了一个list集合,然后调用

    1.3K20

    Oracle如何定时清理INACTIVE状态会话?

    今天小麦苗给大家分享Oracle如何定时清理INACTIVE状态会话? Oracle如何定时清理INACTIVE状态会话?...一般情况下,少量INACTVIE会话对数据库并没有什么影响,但是,如果由于程序设计等某些原因导致数据库出现大量会话长时间处于INACTIVE状态,那么将会导致大量系统资源被消耗,造成会话数超过系统...此时就需要清理那些长时间处于INACTIVE状态会话。...直接KILL掉INACTIVE会话。V$SESSION视图中LAST_CALL_ET字段表示用户最后一条语句执行完毕后到sysdate时间,单位为秒。...每次用户执行一个新语句后,该字段复位为0,重新开始记数。可以通过该字段来获得一个连接用户最后一次操作数据库后空闲时间。推荐使用这种方法来释放INACTIVE状态会话。

    2.6K20

    【React】377- 实现 React 状态自动保存

    ,从详情页退回列表页时,需要停留在离开列表页时浏览位置上 类似的数据或场景还有已填写但未提交表单、管理系统可切换和可关闭功能标签等,这类数据随着用户交互逐渐变化或增长,这里理解为状态交互过程...,因为某些原因需要临时离开交互场景,则需要对状态进行保存 React ,我们通常会使用路由去管理不同页面,而在切换页面时,路由将会卸载掉未匹配页面组件,所以上述列表页例子,当用户从详情页退回列表页时...,会回到列表页顶部,因为列表页组件被路由卸载后重建了,状态被丢失 如何实现 React 状态保存 Vue ,我们可以非常便捷地通过 [1] 标签实现状态保存,该标签会缓存不活动组件实例...周期进行数据恢复 需要保存状态较少时,这种方式可以比较快地实现我们所需功能,但在数据量大或者情况多变时,手动保存状态就会变成一件麻烦事了 作为程序员,当然是尽可能懒啦,为了不需要每次都关心如何对数据进行保存恢复...,我们需要研究如何自动保存状态 通过路由实现自动状态保存(通常使用 react-router) 既然 React 状态丢失是由于路由切换时卸载了组件引起,那可以尝试从路由机制上去入手,改变路由对组件渲染行为

    2.9K30

    热通孔有效放置如何改善PCB设计热管理?

    热通孔放置散热孔位置和尺寸差异很大,这取决于组件类型、不同规则和专业知识。但一个主要规则是加热元件正下方尽可能靠近加热源使用热通孔。...然而,散热不理想情况下,无论元件焊盘位置如何,热通孔也可以放置元件外围。在这种情况下,规则也保持不变,即将过孔放置尽可能靠近组件外围位置。...有效热过孔放置 IC 中正确使用过孔或使用传导加热元件焊盘作为热传递方法,热量分布多层铜之间,然后通过自由空气,散热开始使用对流方法空气中转移。...放置散热过孔时要记住关键点在热通孔设计过程需要注意事项很少,主要包括以下几点:1.外露焊盘设计方式是热量会直接将热量从外壳传递到铜区域。...因此,这是使用热通孔标准做法。希望本文对需要仔细考虑散热设备设计过程和放置过程许多人有所帮助。本文由IC先生网www.mrchip.cn编辑整理,请勿转载。图片来源网络,如有侵权请联系删除。

    1.1K30

    形状中放置单元格内容,让形状文字变化起来

    excelperfect 标签:Excel技巧 有时,我们不希望形状只是使用静态文本,例如想要显示计算结果,该如何操作? 很简单! 如图1所示,想要在圆显示动态时间。...按下回车键,此时单元格A1值就会显示。当更新单元格A1值时,形状圆值也会跟着更新。如下图2所示。 图2 这里,公式栏公式只能引用单个单元格,不能在公式栏输入公式。...假设想在某形状显示列表值之和。并且形状工作表第1行到第4行显示。可以这样操作: 1.将形状移开,并在单元格C2建立一个公式来包含形状文本。...公式可能是: ="今天总计: " & CHAR(10) & TEXT(SUM(A1:A6), "¥#,##0") 2.然后将形状移回原位,选择该形状并输入公式:=C2,设置适当格式,结果如下图3所示...图3 注意,这种方法设置形状中文本更新仅当工作表重新计算时才更新。 假设在图表添加了一个形状,如果希望形状文本来自单元格,则必须在单元格引用之前加上工作表名称。例如,=Sheet1!

    22810

    【Ruby on Rails】Model关于保存之前原值和修改状态

    今天RailsModel遇到了一个问题—— 当我从Model类获取了一个ActiveRecord对象,对其进行了一系列修改(尚未保存),我该如何确定究竟哪些修改了呢?...(设Model为Option,相关参数为correct) 我本来采取方法是——在数据表中新增一个ori_correct参数,每次对象保存之前都和correct做到同步,这样一来,是不是correct...# => true/false 也就是相应字段后面添加_changed?,这样一来问题直接解决,亲测有效。 然而很快另外一个问题又来了,既然知道了是否被改变,那该如何知道原来值是什么呢?...同样,我StackOverFlow上找到了解决办法 Appending _was to your attribute will give you the previous value....(关于更多关于ActiveModel::Dirty所支持各种神奇功能,请在http://api.rubyonrails.org/输入ActiveModel::Dirty)

    1.7K90

    如何检查macOS硬盘状态

    如果你也非常关注你Mac硬盘健康情况的话,这篇文章应该可以帮助你! 今天我将告诉大家如何检查macOS硬盘状态。通过这种方式,你可以轻松找出硬盘健康状态以及是否需要更换新硬盘。...Mac 系统操作系统安装了一个非常出色诊断工具,该工具称为“磁盘工具”。您在启动硬盘“应用程序文件夹”内“工具文件夹”,可以找到“磁盘工具”。...在其他程序文件夹打开磁盘工具 ; 从左侧列表中选择一个硬盘; 按"急救"按钮; 点击"运行"同意以下所有条件,然后开始检查硬盘过程; 完成后,将显示结果,并在检查磁盘窗口中查看详细报告。...如果你硬盘未在"磁盘工具"显示,则它将无法正常运行或定期停止工作,并且很快就会停止工作。磁盘也可能没有稳定数据连接,如果过一段时间电脑损坏了,这极有可能是当初检测出来问题。...最后小编建议大家定期监测Mac硬盘,及早处理状况,还Mac一个健康状态

    4K20

    DaprJava实践 之 状态管理

    状态管理 状态管理(State Management)使用键值对作为存储机制,可以轻松使长时运行、高可用状态服务和无状态服务共同运行在我们服务。...我们服务可以利用Dapr状态管理API状态存储组件中保存、读取和查询键值对。...配置: server.port=30003 启动服务 启动之前先用mvn命令打包: mvn clean package state-management项目的目录执行以下命令,启动state-management...value=万猫学社,可以看到: 状态已经保存了,再访问http://localhost:30003/get验证一下: 状态被正确读取,再访问http://localhost:30003/delete...状态储存组件 初始化Dapr后,默认为我们指定状态储存组件是Redis,在用户目录下.dapr文件夹components文件夹,可以找到statestore.yaml文件: apiVersion

    88010

    【DB笔试面试702】Oracle如何定时清理INACTIVE状态会话?

    ♣ 题目部分 Oracle如何定时清理INACTIVE状态会话?...♣ 答案部分 一般情况下,少量INACTVIE会话对数据库并没有什么影响,但是,如果由于程序设计等某些原因导致数据库出现大量会话长时间处于INACTIVE状态,那么将会导致大量系统资源被消耗,造成会话数超过系统...此时就需要清理那些长时间处于INACTIVE状态会话。...每次用户执行一个新语句后,该字段复位为0,重新开始记数。可以通过该字段来获得一个连接用户最后一次操作数据库后空闲时间。推荐使用这种方法来释放INACTIVE状态会话。...INACTIVE状态会话更多内容可以参考我BLOG:http://blog.itpub.net/26736162/viewspace-2154547/ 本文选自《Oracle程序员面试笔试宝典》,

    93630

    CREATE2 广义状态通道使用

    君士坦丁堡硬升级引入了一个新操作码 CREATE2[1] ,它使用新方式来计算常见合约地址,让生成合约地址更具有可控性,通过 CREATE2 可以延伸出很多新玩法,这篇文章来探讨下,广义状态通道妙用...关于合约地址与状态通道,先科普一下相关知识点。 合约地址如何计算出来?...状态通道则可以基于特定应用程序状态进行链下交互(而不仅仅是支付信息), 如果可以部署一个游戏合约定义游戏规则并抵押资金,玩家可以链下玩游戏(每进行一步游戏签名发给对方), 游戏结束时,只需要把最后状态提交给合约...举个例子:Tiny熊和晓娜拥有一个抵押资金多签钱包,然后定义一个剪刀石头布游戏合约,每次输方向赢方支付1个以太币,玩游戏可以链下进行,结束后,最终状态提交给游戏合约,并触发多签钱包根据状态分配资金...Counterfactual 官方一个介绍是,状态通道,一个“Counterfactual X” 代表: •X 可以链上发生,但它并没有。•任何参与者都可以单方面使得 X 链上发生。

    1.4K20

    内网渗透如何离线解密 RDP 保存密码

    在内网渗透过程可能会遇到目标管理员有远程登陆记录,有些管理员会有保存密码习惯,这个时候我们想要扩大横向范围,密码搜集是最重要。...离线解密 RDP 保存密码 在做渗透过程如果登陆到了目标远程桌面后,或者获取到一个执行命令权限 Shell,第一件事需要做就是权限维持,什么自启动、计划任务都做一遍,第一保证权限不丢失,当然是免杀情况下...; 第二就是把机器里文件翻底朝天,其实就是看看管理员执行一些命令记录,或者一些重要文件,你可能会收获其他东西,例如本篇 RDP 连接记录。...一次渗透通过查看目标注册表发现了历史 RDP 记录: reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client...AppData\Local\Microsoft\Credentials\* [+] host called home, sent: 89 bytes [+] received output: 驱动器 C 卷没有标签

    2.4K31

    如何使用 Pinia ORM 管理 Vue 状态

    这就是为什么像Pinia这样库被创建出来,以增强Vue基本状态管理能力。然而,大型应用程序中使用Pinia可能会带来挑战,这就是为什么建议使用ORM库来处理大型项目中状态管理复杂性。...Pinia ORM包通过与Vue状态有效地配合工作,帮助防止单树状态(single-tree state)缺点。本教程将探讨Pinia ORM特性以及如何在您Vue应用程序中使用它们。...Pinia ORM 概述 ORM(对象关系映射)是一种通过将Vue应用状态数据视为代码对象而不是手动处理来管理和组织数据方法。...Vue项目中设置Pinia ORM 本节将介绍如何在新Vue项目中配置Pinia ORM。打开终端,导航到您想要安装项目的目录,并运行以下命令。... Myfriends.vue 组件,我们可以要求用户输入他们朋友详细信息,并使用Pinia ORMsave()方法将数据保存到数据库

    35020

    Excel公式练习35: 拆分连字符分隔数字并放置同一列

    本次练习是:单元格区域A1:A6,有一些数据,有的是单独数字,有的是由连字符分隔一组数字,例如13-16表示13、14、15、16,现在需要将这些数据拆分并依次放置列D,如下图1所示。...公式 单元格D1输入数组公式: =IF(ROWS($D$1:$D1)>SUM(last-first+1),"",SMALL(IF(first+TRANSPOSE(ROW(INDIRECT("1:"&...要去除不需要数值,只需将上面数组每个值与last生成数组相比较,(last数组生成值为A1:A6每个数值范围上限)。...例如对于上面数组第4行{10,11,12,13},last数组对应值是11,因此剔除12和13,只保留10和11。...综上,单元格D1原来公式: =IF(ROWS($D$1:$D1)>SUM(last-first+1),"",SMALL(IF(first+TRANSPOSE(ROW(INDIRECT("1:"&MAX

    3.7K10

    如何优雅地将printf打印保存在文件

    我们都知道,一般使用printf打印都会直接打印终端,如果想要保存在文件里呢?我想你可能想到是重定向。...例如: $ program > result.txt 这样printf输出就存储result.txt中了。相关内容可以参考《如何理解Linux shell“2>&1”》。...但是本文并不是说明如何实现一个logging功能,而是如何将printf原始打印保存在文件。...: $ tty /dev/pts/0 所以如果我们要将printf打印保存到文件,实际上就让它重定向到这个文件就可以了。...有些后台进程有自己日志记录方式,而不想让printf信息打印终端,因此可能会关闭。 总结 文本旨在通过将printf打印保存在文件来介绍重定向,以及0,1,2文件描述符。

    9.8K31

    如何微信公众号视频保存下来

    前言:微信公众号视频保存,探寻合法渠道 微信公众号,我们常常会遇到一些有趣或有价值视频内容,希望能够保存下来方便日后观看或分享。...本文中,我们将探讨如何在遵守法律法规和版权保护前提下,合法保存微信公众号视频内容,并提供一些实用方法。 为什么要探寻合法保存微信公众号视频方法?...本文主题:如何合法保存微信公众号视频 本文中,我们将重点探讨如何在合法合规前提下保存微信公众号视频。我们将介绍以下方法: 1....使用微信收藏功能: 微信提供了收藏功能,你可以点击右上角收藏按钮,将公众号文章和其中视频保存在微信收藏夹。这样你可以随时微信中查看这些视频,无需担心版权问题。 2....2.浏览器打开公众号文章,然后鼠标右键单击页面的空白处,弹出菜单栏,选择“检查(N)”选项。 3.弹出位置选择"网络"选项。 4.以下页面中选择“媒体”选项,然后点击播放视频。

    1.8K10

    如何将NextJsFile docx保存到Prisma ORM

    背景/引言现代 Web 开发,Next.js 是一个备受欢迎 React 框架,它具有许多优点,如:服务器端渲染 (SSR):Next.js 支持服务器端渲染,可以提高页面加载速度,改善 SEO,...本文中,我们将探讨如何在 Next.js 应用处理上传 Word 文档 (.docx) 文件,并将其内容保存到 Prisma ORM 。...处理文件上传NextJs,使用multer中间件来处理文件上传。创建一个API路由来接收上传文件。...使用爬虫代理IP进行采集某些情况下,我们可能需要从外部源获取数据。这里展示如何使用代理IP进行爬虫,使用爬虫代理服务。...同时,展示了如何使用爬虫代理进行采集,并将爬取到数据存储到数据库。通过这些示例代码,开发者可以更好地理解文件处理和数据存储流程,并灵活应用代理IP技术来扩展数据获取能力。

    14310
    领券