我正在为客户制作杂志主题,并使用自定义的“问题”分类法。每周都有一个新的版本,我还有一个函数可以获取最新的版本。但编辑在该期文章发表前几天创建了一期新文章。我当前的函数使用max()只查找编号最高的问题:
function get_issues() {
$output = array();
$hlterms = get_terms(\'issue\', array(\'hide_empty\' => false));
foreach($hlterms as $term){
array_push($output, $term->name);
}
return $output;
}
function get_current_issue() {
$current_issue_no = max(get_issues());
$current_issue = get_issue_by_number($current_issue_no); // Not important for question
return $current_issue;
}
“issue”中的所有术语都是数字(如字符串),如101402等。我使用最大的数字来返回issue对象,但这在这里并不重要,因为如果我能得到正确的数字,我就可以将其传递给已经在工作的实例化函数get_issue_by_number()
.那么,我如何才能知道返回的“问题”是否发布了帖子?我们的想法是get_current_issue()
函数将只返回发布者认为处于活动状态的最新版本。他们会提前创建文章,并在上传几天后给他们一个发布日期。因此,理想情况下,我可以编写一个函数,返回问题101,即使102存在,因为102没有分配给任何活动帖子。但一旦这些帖子在设定的日期激活,该功能将开始返回102。欢迎所有想法,如果有更好的方法,我很乐意改变我的方法。
下面是我希望实现的一个简单示例:
我有两个“问题”,123和124。不久前,我创建了123个网站,并为其分配了已发布的帖子。但我最近刚刚创建了124个,还没有发布的帖子。我的函数应该返回问题123,而不是124,即使124从技术上来说是最新的。第123期分配了许多已发布的帖子,而第124期则没有,这一事实将决定这一结果。然后,一旦我发布了分配给第124期的帖子,它将成为当前的一期。