首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Gutenberg编辑器: ACF字段的动态变化段塞字段

Gutenberg编辑器: ACF字段的动态变化段塞字段
EN

WordPress Development用户
提问于 2022-04-28 09:13:40
回答 1查看 240关注 0票数 0

我有一个名为"short_title“的ACF自定义字段,我想要基于这个字段而不是post标题字段的post的段塞。

我已经写了这段代码:

代码语言:javascript
运行
复制
function testSlug($post_id)
{
    if (get_post_type($post_id) == 'my-custom-post-type') {
        if (defined('DOING_AUTOSAVE' && DOING_AUTOSAVE)) {
            return;
        }

        if (!current_user_can('edit_post', $post_id)) {
            return;
        }

        remove_action('save_post', 'testSlug');
        $updated_post              = [];
        $updated_post['ID']        = $post_id;
        $updated_post['post_name'] = sanitize_title($_POST['acf']['field_61f8bacf53dc5']);
        wp_update_post($updated_post);
        add_action('save_post', 'testSlug');
        clean_post_cache($post_id);
    }
}
add_action('save_post', 'testSlug');

这很好,可以编辑弹格,但在编辑器上,弹格字段与此字段不同步,当我们单击“保存”或“发布”按钮时,弹格字段将填充post标题段塞。

但是,如果我们刷新编辑页面,就会显示正确的片段。

我尝试做一些JS来同步ACF字段的输入事件和段塞字段,但是它不起作用,因为当面板关闭时,元素将从DOM中删除。此外,即使面板在页面加载时打开,脚本也会在编辑器未完全加载时运行得太早,并且返回undefined,因为字段有一个动态ID (inspector-text-control-XX为1,2,.)。

如何将弹格字段与自定义字段同步?如何防止post标题字段中的事件编辑弹格字段?

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2022-05-02 12:20:18

我找到了一种方法来动态地改变短标题自定义字段的弹格字段。

代码语言:javascript
运行
复制
jQuery(document).ready(() => {

    const acfField = 'field_61f8bacf53dc5';
    const inputShortTitle = document.getElementById('acf-' + acfField);

    const slugify = (str) => {
        return str.toLowerCase().replace(/ /g, '-')
            .replace(/-+/g, '-').replace(/[^\w-]+/g, '');
    }

    const updateSlug = () => {
        wp.data.dispatch('core/editor').editPost({slug: slugify(inputShortTitle.value)});
    }

    if (inputShortTitle !== null) {
        inputShortTitle.addEventListener('input', () => updateSlug());
    }
});
代码语言:javascript
运行
复制
wp.data.dispatch('core/editor').editPost({slug: 'my-slug-value-here'});

是可以更改Gutenberg弹域组件的命令。不再需要PHP,因为当我按Save按钮时,脚本所填充的实际值被发送到API。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/405250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档