如何在WordPress页面中创建不同的可编辑部分?

问题描述 投票:41回答:7

我一直在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添加内容?

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

任何帮助将很高兴。

wordpress wordpress-theming
7个回答
76
投票

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

我认识的许多WP开发者(包括我自己)都依赖于Advanced Custom Fields Plugin来获取更多内容字段。

实现这一目标的步骤:

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>

有很多很好的examples here。如果你真的有野心,而不是安装插件,你甚至可以包括ACF directly in your theme


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.如果您希望在每个页面上显示额外的内容,则其他更具全站点导向。


2
投票
<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>

2
投票

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

如果不是这种情况,请考虑最终用户。他们将如何向页面和帖子添加部分?他们是否必须跨越WordPress UI中的位置,还是他们宁愿用户短代码?

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

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

希望这可以帮助


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>

0
投票

嗨我目前正在开发一个设置的主题。有两种方法可以实现这一目标:

widgetized和固定管理面板(自定义程序选项)

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

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

编辑* widgetized的优点是你可以像在常规侧边栏中那样安排它们


0
投票

正在努力解决这个问题,并且不想使用插件。我找到的唯一WordPress原生选项是使用Custom Fields。这有效,但仅适用于文本,而且相当繁琐。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.