我大约一年前曾问过这个问题,我希望有一些简单的解决方案可以使我实现自己的目标。这样就可以了:

我经常在Admin Editor中使用短代码,但是当我将其交给客户端时,他们通常不了解它们的工作方式。

我是什么寻找一种解决方案,可以简单地在所见即所得(WYSIWYG)编辑器中自动呈现短码的关联输出。或在编辑器中显示图像时。我的意思是,用户将看到输出,但只能将其删除,而不能编辑呈现的简码的内容。

评论

您读过这篇(wp.tutsplus.com/tutorials/theme-development/…)文章吗?检查TinyMCE部分。

我已经读过,但据我所知,它仅涉及创建/注册短代码以及为编辑器创建按钮以快速插入短代码……但是如我所描述的那样,没有关于使用HTML块副本呈现这些短代码的信息。

您是说要包括一个视觉辅助工具,该辅助工具可以代表所包含的任何短代码,而不是用实际交易的HTML实际替换该短代码吗?即画廊占位符,实际上不是画廊代码,而是视觉占位符,只是让用户知道“嘿,这里有一个画廊”?

究竟!而且我希望它具有一定的灵活性,因此允许我基于每个短代码对其进行自定义(类似于您所说的画廊或包含图片的情况)

wordpress.org/plugins/shortcode-ui

#1 楼

实际上,按照您的要求做事还不错。第一个过程大约需要一个小时,接下来的一个过程则需要10分钟。

最终,您要做的是创建一个TinyMCE插件。这是您应该准备的:


创建tinymce插件的一般指南
WordPress Core示例代码
添加TinyMCE插件的一般指南到WordPress。我发现这似乎很合适。

您现在拥有完成任务的所有工具!在所有这些代码中,您最感兴趣的代码就是WP示例代码中的以下代码块:一个img标签。 img标记具有类wp-gallery,该类通过此处的CSS进行样式设置。

编辑2016-04-06:更新了TinyMCE 4和WordPress 4.4的内容和​​链接。

评论


有趣!让我问您...将所有短码的实际内容自动转换为关联内容有什么想法?

– NetConstructor.com
2012年2月1日上午9:09

这全都取决于内容。首先,请记住一些HTML被剥离,在TinyMCE中渲染时遇到问题,等等。其次,假设您的短代码渲染了一块复杂的HTML-如果用户去编辑它,他们可能会无意间破坏它。第三,如果您的简码具有选项,那么除非您杀死整个HTML块并重做简码,否则这些选项现在将变为不可编辑。如果您的代码足够复杂以至于您需要短代码,则我认为占位符是您的最佳选择。

–马修·博因斯(Matthew Boynes)
2012年2月1日14:09

您是否碰巧看到其他人对此提出的解决方案?

– NetConstructor.com
2012年11月23日23:54

#2 楼

这不是一个完整的答案,只是一个设计方向。我认为最好的方法是这样的:

在admin编辑帖子中

从保存的帖子中剥离所有短代码,并将其呈现在编辑器之外的metabox中。确保它们以与短代码在微小编辑器中出现的顺序相同的顺序显示。将HTML从metabox交换到编辑器中。反之亦然。顺序本身也可以作为关联,但是我不希望封闭短代码。但是,有很多方法可以设计良好的ID连接。可以使用ajax即时更新简码。

永远不要保存呈现的简码状态

在切换编辑器之前,请保存草稿,自动草稿和发布,并进行API调用触发还原,因此呈现的简码状态永远不会保存...

可以做到这一点,但是您需要熟悉tinyMCE API才能了解在何处以及何时访问该内容。编辑器,并在“保存”及更多操作之前加入javascript操作。查看[gallery]简码行为。但是单击[MY_SHORTCODE]必须通过一些jQuery技巧来完成。

在admin_footer脚本中,使用以下命令访问光标处于活动状态的内容: >
是如何开始的提示。

#3 楼

我也在寻找一种图形显示和调整短代码的方法。现在,终于,我找到了一个完全可以做到这一点的教程:https://generatewp.com/take-shortcodes-ultimate-level/



描述,以便搜索引擎选择它:


我们将创建一个带有短代码的简单插件,然后我们将添加一个TinyMCE编辑器按钮以插入该插件shortcode槽a
弹出窗口,它将收集shortcode
属性的所有用户输入。然后,我们将用占位符图像替换TinyMCE
编辑器中的短代码,就像
和最后一个–我们将允许通过双击占位符图像来编辑简码及其
属性。