【问题标题】:How do I create different editable sections within a WordPress page?如何在 WordPress 页面中创建不同的可编辑部分?
【发布时间】:2013-09-08 20:22:17
【问题描述】:

我一直在 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


    【解决方案1】:

    为此苦苦挣扎,不想使用插件。我发现的唯一 WordPress 原生选项是使用 Custom Fields。这可行,但仅适用于文本,而且相当麻烦。

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

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

    【讨论】:

      【解决方案2】:

      不幸的是,单独使用 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,而不是安装插件。

      【讨论】:

      • 如果我的建议对您有用,请花点时间并通过单击此答案左侧的大复选框来接受答案。你甚至会得到一些积分:)
      • 这正是我想要的。我必须说一个了不起的插件,可以很容易地向 wordpress 添加多个可编辑部分。非常感谢您迟到的回复。
      • 这个解决方案对我来说效果很好。由于我的 ACF 字段是必需的,我可以通过使用 the_field 稍微简化代码,尽管当我循环浏览几篇文章时 get_field 效果很好。如果未设置字段值,它只会输出一个空字符串,这可能取决于您的标记。 &lt;?php the_field('main_text'); ?&gt;
      • 我花了几天时间试图找到一个合理的过程来实现类似于 OP 要求的东西,而不需要插件。但是经过长时间的调查,我强烈推荐这是一个强大的解决方案,可以立即起床并利用最​​大的灵活性。
      【解决方案3】:

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

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

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

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

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

      【讨论】:

        【解决方案4】:

        我现在已经多次遇到这个问题,虽然这个问题已经 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>
        

        【讨论】:

        【解决方案5】:

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

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

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

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

        希望对你有帮助

        【讨论】:

          【解决方案6】:
          <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>
          

          【讨论】:

          • @developerbmw - 赞成什么,究竟是什么?这方面的技术细节为零。这个神秘的“获取产品数据的wp函数”或类似的东西是什么?
          • @developerbmw - 我第一次看到你的评论。但是,我将重复关于的部分,这方面的技术细节为零。获取作为评论引用的产品数据的神秘 wp_function 是什么?
          【解决方案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。如果您希望在每个页面上显示额外的内容,那么其他的更面向全站点。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-22
            • 1970-01-01
            • 1970-01-01
            • 2014-09-26
            • 1970-01-01
            • 1970-01-01
            • 2019-09-25
            • 1970-01-01
            相关资源
            最近更新 更多