- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个侧边栏插件,用于存储要在前端使用的帖子元数据。无需赘述,我需要将所有数据存储为 1 个元条目,而不是每个帖子的多行 .这是我到目前为止所拥有的:
// ds-jars.js
const pluginContent = (props) => {
const productData = () => {
const categoryId = createElement( PanelRow, null,
createElement(TextControl, {
label: "Category Name",
value: props.category_id,
onChange: (content) => {
props.set_category_id(content)
},
})
)
const serialId = createElement( PanelRow, null,
createElement( TextControl, {
label: "Serial Number",
value: props.serial_id,
onChange: (content) => {
props.set_serial_id(content)
}
})
)
const productId = createElement( PanelRow, null,
createElement( TextControl, {
label: "Product ID",
value: props.product_id,
onChange: (content) => {
props.set_product_id(content)
}
})
)
return createElement(PluginDocumentSettingPanel, {
title: "Product Data",
name: "ds-jars-productdata",
icon: 'none',
}, categoryId, serialId, productId
)
}
return productData()
}
const selectData = (select) => {
return {
category_id: select("core/editor").getEditedPostAttribute("meta")["category_id"],
serial_id: select("core/editor").getEditedPostAttribute("meta")["serial_id"],
product_id: select("core/editor").getEditedPostAttribute("meta")["product_id"],
name: select("core/editor").getEditedPostAttribute("meta")["name"],
quantity: select("core/editor").getEditedPostAttribute("meta")["quantity"],
color: select("core/editor").getEditedPostAttribute("meta")["color"],
height: select("core/editor").getEditedPostAttribute("meta")["height"],
width: select("core/editor").getEditedPostAttribute("meta")["width"],
depth: select("core/editor").getEditedPostAttribute("meta")["depth"],
pattern: select("core/editor").getEditedPostAttribute("meta")["pattern"],
date_made: select("core/editor").getEditedPostAttribute("meta")["date_made"],
date_updated: select("core/editor").getEditedPostAttribute("meta")["date_updated"],
date_expired: select("core/editor").getEditedPostAttribute("meta")["date_expired"]
}
}
const dispatchData = (dispatch) => {
return {
set_category_id: (value) => {dispatch("core/editor").editPost({meta:{category_id: value} })},
set_serial_id: (value) => {dispatch("core/editor").editPost({meta:{serial_id: value} })},
set_product_id: (value) => {dispatch("core/editor").editPost({meta:{product_id: value} })},
set_name: (value) => {dispatch("core/editor").editPost({meta:{name: value} })},
set_quantity: (value) => {dispatch("core/editor").editPost({meta:{quantity: value} })},
set_color: (value) => {dispatch("core/editor").editPost({meta:{color: value} })},
set_height: (value) => {dispatch("core/editor").editPost({meta:{height: value} })},
set_width: (value) => {dispatch("core/editor").editPost({meta:{width: value} })},
set_depth: (value) => {dispatch("core/editor").editPost({meta:{depth: value} })},
set_pattern: (value) => {dispatch("core/editor").editPost({meta:{pattern: value} })},
set_date_made: (value) => {dispatch("core/editor").editPost({meta:{date_made: value} })},
set_date_updated: (value) => {dispatch("core/editor").editPost({meta:{date_updated: value} })},
set_date_expired: (value) => {dispatch("core/editor").editPost({meta:{date_expired: value} })}
}
}
let fieldSelect = withSelect(selectData)(pluginContent)
let fieldDispatch = withDispatch(dispatchData)(fieldSelect)
registerPlugin( "ds-jars", {
icon: 'store',
render: fieldDispatch
})
register_post_meta('', 'ds_product',
array(
'type' => 'object',
'single' => true,
'show_in_rest' => array(
'schema' => array(
'type' => 'object',
'properties' => array(
'category_id' => array('type' => 'string'),
'serial_id' => array('type' => 'string'),
'product_id' => array('type' => 'string'),
'name' => array('type' => 'string'),
'quantity' => array('type' => 'string'),
'color' => array('type' => 'string'),
'height' => array('type' => 'string'),
'width' => array('type' => 'string'),
'depth' => array('type' => 'string'),
'pattern' => array('type' => 'string'),
'date_made' => array('type' => 'string'),
'date_updated' => array('type' => 'string'),
'date_expired' => array('type' => 'string'),
)
)
)
)
);
// Create prop to get data from serialized field
category_id: select("core/editor").getEditedPostAttribute("meta")["ds_product"].category_id
category_id: select("core/editor").getEditedPostAttribute("meta")["ds_product"].serial_id
...
// Update serialized field
set_category_id: (value) => {dispatch("core/editor").editPost({meta:{ds_product:{category_id: value} }})},
set_serial_id: (value) => {dispatch("core/editor").editPost({meta:{ds_product:{serial_id: value} }})},
...
最佳答案
我遇到了这个问题,对我有用的是 dispatch()
的以下用法和 saveEntityRecord
.
在以下示例中,我将序列化对象保存到 wp_options
WP 数据库中的表。
// Save serialized data to wp_options.
dispatch('core').saveEntityRecord('root', 'site', {
my_plugin_settings: {
test_1: 'Test 1 Setting Value',
test_2: 'Test 1 Setting Value',
},
}).then(() => {
})
.catch((error) => {
dispatch('core/notices').createErrorNotice('Error', {
isDismissible: true,
type: 'snackbar',
});
});
});
首先,您必须像上面一样注册设置,以便可以通过 REST API 使用。
register_setting(
'my_plugin_settings',
'my_plugin_settings',
[
'default' => '',
'show_in_rest' => [
'schema' => [
'type' => 'object',
'properties' => [
'test_1' => [
'type' => 'string',
],
'test_2' => [
'type' => 'string',
],
]
],
]
]
);
然后使用上面我的答案中的代码,您可以正确保存序列化值。
关于javascript - 如何在 Gutenberg 中使用序列化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59570059/
我正在尝试通过 Rich Text by function 输入文本。但光标会自动超出 RichText。我已经导入了需要的基本组件。我也通过 onKeyUp 而不是 onChange 尝试过,但也没
我正在使用 Gutenberg 的 withSelect 包来尝试获取属于该站点的所有帖子类型。这是我的代码: export default withSelect( select => { /
我正在按照"Running Hadoop On Ubuntu Linux (Single-Node Cluster)"教程测试Hadoop。 运行此命令后无输出: bin/hadoop jar had
我在 block 中有一个富文本元素,想创建自己的“我的数据属性”并将其包含在输出中,但我似乎无法找到这样做的方法。我的属性已经与 SelectControl 一起使用,但我似乎无法让 data-at
我已经开始用 ACF 和自定义块测试古腾堡编辑器。我一直在环顾四周以解决我的问题,但我找不到有关此主题的任何信息(也许我的 google 技能不够好) 但我的情况是这样的: 我有一个自定义帖子类型,我
我正在尝试创建一个侧边栏插件,用于存储要在前端使用的帖子元数据。无需赘述,我需要将所有数据存储为 1 个元条目,而不是每个帖子的多行 .这是我到目前为止所拥有的: // ds-jars.js cons
对于我一生,我找不到有关如何执行此操作的任何信息:只需在主题模板中通过php输出可重用的gutenberg块。似乎应该可行。任何人? 最佳答案 可能回答我自己的问题。请告诉我是否有更好/更简便的方法可
我正在使用Gutenberg block filters尝试将动态类名添加到编辑器中 block 的包装器组件中。 registerBlockType( name, { title: __(
我目前正在测试新的 Gutenberg UI,我对一些旧代码有一些问题。 我想在 metabox 中以编程方式更改 metabox 值时激活更新按钮(在我的例子中是一个 tinymce 编辑器,但我在
我在当前元素(第一个使用 Gutenberg 制作的元素)中有很多自定义内容需要设置样式,编辑两个文件(包括大量媒体查询)使这项任务非常令人恼火。 是否有可能(并且可行)在 WordPress 中将“
我想要在提供 gallery 时使用的媒体上传弹出窗口。属性为 零件。与普通 Mediaupload 的不同之处在于,您会在左侧看到一个侧边栏,选择项目后,您会看到一个 View ,您可以在其中重新排
我想为我的动态 wordpress block 提供 anchor 支持。我做了 //in registerBlockType supports: { anchor: true, }, 这会在
我正在创建自定义用户编辑帖子界面,我需要完全删除 gutenberg pos 预发布检查并发布。我该怎么做? 最佳答案 您可以完全禁用发布侧边栏 wp.data.dispatch('core/edit
我正在开发一个 100% 基于古腾堡 block 的 wordpress 主题。有些页面直接在编辑器上构建(例如主页),但其他页面(例如搜索结果)需要编码。 例如,我想使用后网格 block 显示我的
我正在尝试删除一些 CSS,它是由 Wordpress 在前端添加的。在上次更新时,Wordpress 正在添加这样的类: wp-container-620d4049355bb/wp-contai
我正在为古腾堡 RichText 块使用以下代码 el( RichText, { key: 'editable', tagName: 'ul',
我对古腾堡完全陌生,我需要在设置部分添加一个新标签请查看此屏幕截图 我为古腾堡创建了一些块,但没有这方面的经验。我试过这个代码 import { TabPanel } from '@wordpress
我想向古腾堡文档面板添加自定义元字段并使用 this doc .对于我使用的自定义元字段 this tutorial .尝试将它们放在一起时出现了问题。 到目前为止,这是我的代码: const { _
我正在尝试向我的 InnerBlocks 组件添加自定义 appender。我按照这里的例子:https://github.com/WordPress/gutenberg/tree/master/pa
我已经在 Wordpress 中注册了一个自定义分类法,但我无法弄清楚为什么它没有显示在标准的 Wordpress 帖子中,因为已经引入了 Gutenberg。我的意思是,在添加或编辑帖子时,它不会显
我是一名优秀的程序员,十分优秀!