如何在WordPress页面中创建不同的可编辑section()

我一直在WordPress上构建我的第一个主题, 并且在将内容添加到不同部分时遇到了问题。
我的HTML有点像这样,

< div id="maintext"> < -- Text --> < /div> < div id="products"> < -- Text and Images --> < /div> < div id="about_company"> < -- Text boxes --> < /div>

【如何在WordPress页面中创建不同的可编辑section()】如何确定通过WordPress编辑器添加的内容属于各自的div?对于” maintext” div, 我将从页面本身加载内容, 但是如何动态地将内容添加到其他2 div中?
我在几个论坛上进行了搜索, 很多建议使用小部件添加内容, 如果不使用小部件, 有什么方法可以完成?
任何帮助将不胜感激。
#1不幸的是, 单独使用WordPress在单个页面中添加多个可编辑字段并不是特别容易。
我认识的许多WP开发人员(包括我本人)都依赖Advanced Custom Fields插件来获取其他内容字段。
实现此目的的步骤:
1)安装ACF插头。
2)在ACF的设置区域中, 创建一些新字段。
3)分配新字段以显示特定页面或一组页面。
4)更新给定页面的页面模板, 以便显示新字段。
例如, 你可以创建一组标准的所见即所得字段, 然后将它们分配给” 概述” 页面。我们将这些字段称为:main_text, products_info和about_company。创建字段并将其分配给页面后, 当你编辑该页面时, 将可以编辑其他字段。
为了使访问者可以看到这些新字段, 必须将它们添加到用于概述页面的页面模板中。代码可能是这样的:
< div id="maintext"> < !-- Text --> < ?php if(get_field('main_text')){ //if the field is not empty echo '< p> ' . get_field('main_text') . '< /p> '; //display it } ?> < /div> < div id="products"> < !-- Text and Images --> < ?php if(get_field('products_info')){ //if the field is not empty echo '< p> ' . get_field('products_info') . '< /p> '; //display it } ?> < /div> < div id="about_company"> < !-- Text boxes --> < ?php if(get_field('about_company')){ //if the field is not empty echo '< p> ' . get_field('about_company') . '< /p> '; //display it } ?> < /div>

这里有很多很好的例子。如果你确实有雄心壮志, 则无需安装插件, 甚至可以直接在主题中包含ACF。
#2我相信你有三种选择:
  1. 创建一个小部件区域, 然后可以在其中显示文本小部件中的内容:http://codex.wordpress.org/Function_Reference/register_sidebar
  2. 创建一个模板, 然后在该模板中获取其他页面的内容:http://codex.wordpress.org/Page_Templates#File_Folders
  3. 为你的所有页面创建一个新的meta框:http://codex.wordpress.org/Function_Reference/add_meta_box
我相信你正在寻找的是选项2。如果你希望在每个页面上显示额外的内容, 则其他选项则更面向全站点。
#3如果你正在编写主题, 也许你想考虑使用WordPress框架, 这样就不必从头开始。
如果不是这种情况, 请考虑最终用户。他们将如何在页面和帖子中添加部分?他们将不得不在WordPress用户界面中跨位置移动, 还是宁愿使用用户短代码?
我的建议是建立一个可在文档内容中呈现该部分的插件。如果是这种情况, 则为小部件内容。
我写了一些代码来说明如何完成这样的事情, 也因为我现在有点需要:D。你可以在github上找到它https://github.com/lionpage/Front-Office-Document-Sections
希望这可以帮助
#4
< div id="maintext"> < ?php the_content(); ?> < /div> < div id="products"> < ?php // echo wp function to get product data; ?> < /div> < div id="about_company"> < ?php // echo wp function to get about companydata; ?> < /div>

#5我已经多次遇到这个问题了, 虽然这个问题已经3年了, 但我认为它仍然是最新的。我现在有时成功使用了” 多个内容块” 插件:
https://ltz.wordpress.org/plugins/multiple-content-blocks/
安装插件后, 你只需在模板中包含the_block即可:
< div id="maintext"> < ?php the_content(); ?> < /div> < div id="products"> < ?php the_block('products') ?> < /div> < div id="about_company"> < ?php the_block('company') ?> < /div>

#6你好, 即时通讯目前正在建立一个主题。有两种方法可以实现此目的:
小部件化和固定的管理面板(客户选项)
如果小部件创建一个包含小部件部分的.php文件, 则在主题中使用两者
如果在管理面板中修复, 则必须在functions.php中包括.php部分
编辑*小部件化的优点是你可以像在常规边栏中一样排列它们
#7正在为此而苦苦挣扎, 并且不想使用插件。我发现的唯一WordPress本机选项是使用” 自定义字段” 。这有效, 但仅适用于文本, 并且相当麻烦。
另一个非插件选项是仅在WordPress编辑器中使用HTML, 但这当然也不理想。
最后, 我放弃了, 并选择了Advanced Custom Fields插件。

    推荐阅读