我需要为我的客户提供一种管理文本日历页面的简便方法。
它应该基本上包含要在页面中插入的小元素:
Month name
13/07/2015 - Some text
15/07/2015 - Some other text
Other Month name
13/08/2015 - Some text
15/08/2015 - Some other text
等等。
我不确定要通过哪种方式来实现这样的目标。我想过:
1)创建一个日历页面并使用一组预定义的自定义字段管理所有内容,并具有复制同一组字段的可能性。但我不确定这是否真的可行。
2)使用几个自定义字段为日历创建自定义帖子类型,因此客户端需要做的只是创建一个新帖子。但是,如果我想按月分组事件,我想我需要在帖子中复制自定义字段。
如果不清楚我的意思是“复制”:让我们说我在帖子中有一组两个自定义字段:一个是日期,另一个是文本。我希望它们自动显示在管理面板中,客户端只需按“添加”即可添加相同字段的另一个副本。
如何在不使用插件的情况下做这样的事情?
答案 0 :(得分:1)
我知道你说“可能没有使用插件”,但如果你要使用插件,请查看Advanced Custom Fields Pro。它可以轻松地为您的Wordpress网站添加自定义字段。
使用Repeater字段,可以轻松实现。您可以创建一组字段,然后在页面上添加任意数量的字段集。您可以选择设置字段集数量的最小值和最大值。
我在我开发的所有网站上广泛使用此插件,因此我购买了开发人员许可证(100美元),但单站点许可证仅为25美元。但是如果你开发多个WordPress网站,我会推荐开发许可证。
http://www.advancedcustomfields.com/pro/
Repeater字段的文档: http://www.advancedcustomfields.com/resources/repeater/
在页面模板上显示转发器内容的代码非常简单。对于此示例,假设您的转发器名为“my_repeater”,并且您有2个文本输入字段,名为“text_1”和“text_2”。
<?php // check if the repeater field has rows of data
if( have_rows('my_repeater') ):
echo '<div id="repeaterContainer">';
// loop through the rows of data
while ( have_rows('my_repeater') ) : the_row();
// display a sub field value
echo '<h2>'.get_sub_field('text_1').'</h2>';
echo '<p>'.get_sub_field('text_2').'</p>';
echo '<hr />';
endwhile;
echo '</div>';
else :
// no rows found
endif; ?>
这将输出以下html:
<div id="repeaterContainer">
<h2>My Text</h2>
<p>Second Field Text</p>
<hr />
<h2>Text</h2>
<p>More Text Here</p>
<hr />
<h2>More Text</h2>
<p>Text</p>
<hr />
<h2>My Extra Text</h2>
<p>Here is some more text for a custom field.</p>
<hr />
</div>