49

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

我的 HTML 有点像这样,

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

如何确保通过 WordPress 编辑器添加的内容属于相应的 div ?对于“maintext” div,我将从页面本身加载内容,但如何动态地将内容添加到其他 2 个 div?

我在几个论坛上搜索,许多人建议使用小部件添加内容,有没有什么方法可以在不使用小部件的情况下完成?

任何帮助将不胜感激。

4

7 回答 7

82

不幸的是,单独使用 WordPress 在单个页面中添加多个可编辑字段并不是特别容易。

我认识的许多 WP 开发人员(包括我自己)都依赖高级自定义字段插件来获取其他内容字段。

实现这一点的步骤:

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,而不是安装插件。

于 2013-09-05T07:45:09.270 回答
7

我相信你有三个选择:

  1. 创建一个小部件区域,然后您可以在其中显示文本小部件中的内容:http: //codex.wordpress.org/Function_Reference/register_sidebar
  2. 创建一个模板,然后您可以在其中获取不同页面的内容: http: //codex.wordpress.org/Page_Templates#File_Folders
  3. 为您的所有页面创建一个新的元框:http: //codex.wordpress.org/Function_Reference/add_meta_box

我相信您正在寻找的东西是选项 2。如果您希望在每个页面上显示额外的内容,则其他选项更面向全站点。

于 2013-09-05T07:36:10.703 回答
2

如果您正在编写主题,也许您想考虑使用 WordPress 框架,这样您就不必从头开始。

如果不是这种情况,请考虑最终用户。他们将如何在页面和帖子中添加部分?他们是否必须在 WordPress UI 中移动,还是更愿意使用短代码?

我的建议是构建一个插件来呈现文档内容中的部分。或小部件内容,如果是这样的话。

我写了一小段代码来说明如何完成这样的事情,也因为我现在有点需要它:D。你可以在 github 上找到它https://github.com/lionpage/Front-Office-Document-Sections

希望这可以帮助

于 2015-05-20T04:52:36.527 回答
1
<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>
于 2013-09-05T09:25:44.677 回答
0

我现在已经多次遇到这个问题,虽然这个问题已经 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>
于 2016-05-24T20:34:47.887 回答
0

正在为此苦苦挣扎,并且不想使用插件。我发现的唯一 WordPress 原生选项是使用自定义字段。这有效,但仅适用于文本,而且相当麻烦。

另一个非插件选项是在 WordPress 编辑器中简单地使用 HTML,但这当然也远非理想。

最后我放弃了,也选择了 Advanced Custom Fields 插件。

于 2018-09-20T12:44:48.967 回答
0

嗨,我目前正在使用该设置开发主题。有两种方法可以实现这一点:

小部件化和固定的管理面板(定制器选项)

如果小部件创建一个包含小部件部分的 .php 文件,我将在我的主题中使用这两个文件为该部分创建一个小部件

如果在管理面板中修复,则必须在 functions.php 中包含 .php 部分

编辑 * widgetized 的优点是您可以像在常规侧边栏中一样排列它们

于 2018-10-27T15:06:43.267 回答