帮助创建具有自定义Meta框的幻灯片放映自定义帖子类型?

时间:2010-09-14 作者:matt

我需要为我的自定义帖子类型“Slideshow”(此帖子类型已创建)创建一个自定义帖子元框。每个元数据库将保存每个幻灯片中的内容,并将其保存到相应的自定义字段中。每个元数据库应包含以下字段:

标题(文本字段)

  • 图像(img URL的文本字段,或者理想情况下是显示附在帖子上的图像缩略图的下拉列表)
  • 嵌入代码(文本区域)
  • 说明(wysiwyg)
  • 隐藏幻灯片(用于临时隐藏幻灯片而不删除幻灯片的复选框)
  • 删除幻灯片(删除此幻灯片填写的post meta字段内容的按钮)
  • 我还希望在某个位置有一个按钮,允许我“添加幻灯片”,因此当单击它时,它会添加另一个“幻灯片”自定义meta框,该框与第一个框重复,但会为每个自定义post meta字段添加一个增量数字。我目前只有15个元框,幻灯片放映模板的设置方式是,如果只填充了5个元框,那么只显示5张幻灯片。

    最后,我希望能够对幻灯片进行重新排序,无论是通过“拖放”还是通过另一个可以键入订单号的文本字段。

    我已经把它拿到我需要的地方了"More Fields" plugin 以及一些来自Rarst的代码帮助。使用“更多字段”插件,我在每个元数据库中都有以下字段:

    标题(文本字段)

  • 图像(附于帖子的图像下拉列表)
  • 嵌入代码(文本区域)
  • 说明(wysiwyg)
  • 隐藏幻灯片(用于临时隐藏幻灯片而不删除幻灯片的复选框)
    • 以下是我如何通过“更多字段”插件进行设置的屏幕截图:

      alt text

      这样做的问题是,幻灯片制作完成后无法删除,因为“更多字段”不使用<?php delete_post_meta($post_id, $key, $value); ?> 在任何地方该插件的另一个问题是,它太不可靠,经常会随着更新而中断。

      我已经能够使用自己的自定义元数据库实现类似的解决方案,其中包括:

      标题(文本字段)

    • 图像(img URL的文本字段)
    • 嵌入代码(文本区域)
    • 说明(文本区域)
    • 隐藏幻灯片(用于临时隐藏幻灯片而不删除幻灯片的复选框)
      • 使用此实现,我似乎无法让多个TinyMCE字段或图像下拉框正常工作。TinyMCE代码似乎可以工作,直到我添加了创建第一个元盒增量副本的代码,此时我在TinyMCE按钮应该位于的字段上方出现了此错误:Warning: array_push() [function.array-push]: First argument should be an array....

        此外,现在我依靠我的作者知道为每张幻灯片放入视频或图像,这没关系,但最好有一个单选按钮,让他们选择幻灯片是哪一张(可能默认为图像),它与幻灯片模板中的条件显示语句相关联。

        我正在通过侧边栏中的内置“特色图像”框处理图像上传,尽管我不介意在写面板顶部有一个简单的“上传图像”的自定义元框。

        最后,我想看一个类似的幻灯片:http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html. 我希望我的也能够有一个视频作为幻灯片中的内容,而不是图片。我需要一个直观且易于使用的管理面板,供我的作者使用(他们不太懂技术,使用html和/或短代码也不可靠)。为了防止示例中不清楚,每张幻灯片都应该生成一个新的页面视图。

        Drag\'n\'Drop重新排序不是一个高优先级,但它会很酷。我发现一个插件可以很好地处理这个问题:SlideDeck. 不幸的是,这个插件不适合我的需要,但他们处理幻灯片排序的方式非常灵活。侧边栏中有一个单独的元框,可以将幻灯片按自己喜欢的顺序拖动。这也是您添加幻灯片的方式,单击“添加幻灯片”按钮,将另一个幻灯片元盒添加到写入面板。以下是屏幕截图:

        alt text

        你也可以看到more screenshots of it in action in the wordpress repository.

        Here is all my code:

        设置我的幻灯片帖子类型和幻灯片分页的功能:http://loak.pastebin.com/g63Gf186

        源代码DeluxeBloggingTips.com (DBT),我的元数据库基于:http://loak.pastebin.com/u9YTQrxf

        我修改了DBT代码的版本,以提供相同元盒的增量版本:http://loak.pastebin.com/WtxGdPrN

        DBT代码的修改版本Chris Burbridge 创建以允许多个TinyMCE实例:http://loak.pastebin.com/Mqb3pKhx<有了这段代码,TinyMCEs就可以工作了

        我对Burbridge代码的修改,尝试将我的增量和一个字段合并在一起,该字段允许您从帖子附带的所有图像的下拉列表中选择图像:http://loak.pastebin.com/xSuenJTK在这次尝试中,TinyMCE被破坏,下拉列表不起作用

        这可能无关紧要,但如果您想知道,下面是我用来从自定义贴子元中提取嵌入代码、调整其大小并将其插入贴子的代码:http://loak.pastebin.com/n7pAzEAw

        This is an edited version of the original question to reflect the current status of the project and answers the questions posted in the comments. Thanks to Chris_O for putting the bounty on this. Also, thanks to Rarst and Justin for helping me out with a lot of this in the ThemeHybrid.com forum. I have spent hours and hours on this and am stuck (I spent a couple hours alone on this Question). Any help would be greatly appreciated.

    2 个回复
    最合适的回答,由SO网友:EAMann 整理而成

    从外观上看,最安全、最简单的方法是专门为您使用的fork the More Fields插件。我能看到您的叉子需要的两个最大的功能是一个字段;“工厂”;和拖放界面。

    多个字段

    我的建议是查看WordPress Widget class 并将其用作您的字段工厂的模型-基本上,在为字段构建框架后,借用创建多个字段实例的功能。

    这是多个小部件如何在侧边栏中工作的核心:

    通过扩展WP_Widget 类别delete 命令,并通过外观拖放界面明确设置其位置。再次,我建议查看WordPress小部件系统以获得灵感。我们已经在那里设置了一个相当直观的拖放界面,因此在其他地方重新使用大部分相同的代码将相当容易。或者,如果您真的想变得有趣,您可以在一个单独的自定义元字段中实现自己的拖放系统。

    因此,每张幻灯片都将由链接到帖子的自定义元框定义。幻灯片的顺序将由一个单独的自定义元框设置,该框也链接到帖子。我建议您通过AJAX提交幻灯片更新,以便您可以根据信息动态更新幻灯片顺序元框(这样可以避免在移动内容之前手动点击“更新”并等待页面重新加载)。

    jQuery UI有一个很好的;draggable&引用;在这个自定义元框中,您可以为自己的目的轻松操纵的接口。最困难的部分不是构建界面,而是在元框和页面其他地方的幻灯片元框集合之间实现一致、准确的通信。

    总之,我从你的帖子中得到的信息是,你有一个可行的解决方案:

    您已经通过“更多字段”小部件向自定义帖子类型添加了15个自定义字段,但希望动态添加/删除字段,而不是使用设置的数字。您希望有一种方法来调整这些自定义字段的顺序,以便幻灯片按顺序加载。我的方法是将自定义元创建过程抽象到一个类中,我可以反复使用创建新的自定义元字段。然后,我将扩展该类以初始化两种类型的元框:一种用于幻灯片,另一种用于幻灯片结构。我还将在幻灯片结构元框中构建动态创建新幻灯片元框的功能(幻灯片元框将包含自己的“删除”操作)。

    整个幻灯片不是通过幻灯片元框存储的,而是通过幻灯片结构元框存储到post的自定义元字段中-自定义元将是一个锯齿状数组,其中每个幻灯片按顺序表示为数组。在结构元框中自定义幻灯片的顺序将重新组织数组并重新保存后期元。这样,当我想要访问幻灯片时,我只有1个元值可以读出。

    在SlideDeck、更多字段和到目前为止已组合的自定义代码之间,您已经掌握了大部分解决方案。。。你只需要让所有的工作同时进行。在添加JavaScript修饰之前,我会首先关注根实现——动态创建、修改、保存和删除幻灯片比富文本编辑器IMO更重要。首先解决这个问题。然后关闭订购系统<然后,您可以集中精力在页面上获取TinyMCE的多个实例。

    SO网友:Ben Racicot

    我找到了这个,这正是你(我)在寻找的->http://pippinsplugins.com/drag-and-drop-order-for-plugin-options/

    结束

    相关推荐

    我可以将类别Metabox添加到附件吗?

    我在用register_taxonomy_for_object_type() 将类别分类字段添加到媒体上载(附件)。我正在使用此代码执行此操作:add_action(\'init\', \'reg_tax\'); function reg_tax() { register_taxonomy_for_object_type(\'category\', \'attachment\'); } 这可以在查看图像时为媒体页面添加一个简单的分类文本字段。我真正想要的是让它显示实