这是一个有点“找到正确的平衡”的问题。您正在努力平衡所有自定义主题开发人员必须处理的问题。
在范围的一端,您的内容区域只会弹出\\u content(),所有内容的格式和控制都由用户决定(或者您在后端,如果您是为他们做的话)。你给WordPress(TinyMCE)中的所见即所得(WYSIWYG)小编辑器带来了沉重的负担。
另一方面,将内容区域HTML保留在模板中,只允许他们在编辑器中输入特定的信息片段。
从你的问题来看,我想你可能错过了最后一点。如何让他们在控制页面模板中的HTML的同时输入内容?
没有唯一正确的答案,但许多开发人员使用post元数据来实现这一点。因此,如果您正在为所有员工制作一个包含姓名、标题、照片和简短简历的“与员工见面”页面,您应该设置特定的自定义元字段来跟踪这些数据。
然后,在页面模板中,将元数据注入HTML结构中的正确位置,使用PHP创建循环(即为每个工作人员重复HTML)。
有一些非常有用的插件可以实现这种方法。高级自定义字段可能是最常见的--您可以定义哪些字段放在哪里,在页面模板上访问它们就像访问get\\u field(\'\\uuuuuu\')一样简单。专业版是WordPress中最划算的版本——100美元用于所有网站,终身使用。
在我们的示例中,我们将创建一个如下所示的字段组:
工作人员(中继器字段)姓名(文本字段)
标题(文本字段)照片(照片字段,设置为返回ID)个人信息(文本区域字段)(分配给具有模板“会见团队”的页面的字段组)编辑“会见团队”页面时,您会看到这4个字段,由于这是一个重复项,您可以根据需要多次复制它们。
在页面模板文件(即page meet the team.php)中,您可以循环查看该数据。
//do we have any staff members?
if ( have_rows( \'staff_member\' ) ):
//loop through each staff member
while ( have_rows( \'staff_member\' ) ) : the_row();
//pull the fields for each iteration of the loop
$staff_name = get_sub_field( \'name\' );
$staff_title = get_sub_field( \'title\' );
$staff_photo_id = get_sub_field( \'photo\' );
$staff_bio = get_sub_field( \'bio\' );
//set up the photo if it was set
$staff_photo = $staff_photo_id ? wp_get_attachment_img( $staff_photo_id, \'medium\' ) : \'\';
echo "<div class=\'staff-member\'>";
echo "<h3 class=\'staff-member__name\'>$staff_name</h3>";
echo "<h4 class=\'staff-member__title\'>$staff_title</h4>";
if( $staff_photo ){
echo "<div class=\'staff-member__photo-container\'>$staff_photo</div>";
}
echo "<p class=\'staff-member__bio\'>$staff_bio</p>";
echo "</div><!-- /.staff-member -->";
endwhile;
endif;
因此,我们用ACF设置了自定义字段,用它们在页面上输入动态内容,然后循环遍历这些数据并将其输出到页面模板上。最终用户几乎看不到这些内容——他们只是打开页面,输入内容。你应该帮他们搬重物。因此,所有这些可能都是将您认为是一项小工作(将一些HTML放入WordPress主题)变成一项复杂的工作(定义字段、创建模板等)。你可能会觉得这不值得,只需像你尝试过的方法一样保持网站更静态。这没什么错。
老实说,你的问题是古腾堡诞生的一个重要原因。它为后端编辑器定义内容区域提供了更大的灵活性。这可能对您的具体情况没有太大帮助,因为您正在转换一个现有的静态站点,它不是围绕古腾堡这样的区块构建的。