我目前正在尝试使用 wordpress 制作电子杂志,并完成了大部分工作。主页显示了包含在该版本电子杂志中的“片段”列表。我想这样做,当版本过期(当前使用 Post Expirator 插件)时,会自动创建一个新页面,类似于首页,以显示该特定(现已过期)版本的索引。
我在使用 PHP 方面不是很有经验,而且还是 wordpress 的新手。我怎么能做到这一点?
这个想法是这样的,你只需要得到到期日期并用它来设定条件。您只需要具备基本的 php 技能就可以做到这一点。这是逻辑
if($curdate > $expiration_date){ //you can change the condition into ">=" if you want to create a post on and after expiration date
//sample wordpress wp_insert_post
$my_post = array(
'post_title' => 'My post',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(8,39)
);
// Insert the post into the database
wp_insert_post( $my_post );
}
欲了解更多信息,请访问http://codex.wordpress.org/Function_Reference/wp_insert_post
以下是我最终所做的,以 Felipe 的建议为起点。这样做可能有一种不那么令人费解的方式,但是,正如我所说,我只是一个初学者,所以这就是我想出的:
首先,我创建了一个 volnum 变量,它跟踪当前的卷号。然后,我缓存首页,以便以后可以将其保存为独立的 html 文档:这是 index.php 的开头,在 get_header() 之前。
<?php $volnum; ?>
<?php ob_start(); ?>
在首页,我有一篇社论,在它旁边,我有内容索引。我正在保存编辑标签(始终是“voln”,其中“n”是卷号)卷号(也许 foreach 不是必需的,因为编辑只有一个标签):
<?php $tags = get_the_tags();
foreach ($tags as $tag){
$volnum = $tag->name;
}
?>
最后,在文档的最后,在最后一个 html 之后,我添加了以下代码:
<?php
$handle = opendir("past_vol/");
$numOfFiles = count($handle);
$volExists = false;
for($i=0;$i<=$numOfFiles;$i++){
$name = readdir($handle);
if($volnum.".html" == ($name)){
$volExists = true;
continue;
}
}
if($volExists == false){
$cachefile = "past_vol/".$volnum.".html";
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
}
closedir($handle);
ob_end_flush();
?>
“past_vol”是我保存过去卷 html 文件的目录。因此打开了目录,计算了文件的数量,并开始了遍历每个文件名的循环。如果文件与 $volnum 同名,则 $volExists 为真。如果在循环结束时 $volExists 为 false,则它会保存缓存页面。
同样,它可能会被优化很多,但现在这可行!