0

我目前正在尝试使用 wordpress 制作电子杂志,并完成了大部分工作。主页显示了包含在该版本电子杂志中的“片段”列表。我想这样做,当版本过期(当前使用 Post Expirator 插件)时,会自动创建一个新页面,类似于首页,以显示该特定(现已过期)版本的索引。

我在使用 PHP 方面不是很有经验,而且还是 wordpress 的新手。我怎么能做到这一点?

4

2 回答 2

0

这个想法是这样的,你只需要得到到期日期并用它来设定条件。您只需要具备基本的 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

于 2012-11-22T03:04:06.843 回答
0

以下是我最终所做的,以 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,则它会保存缓存页面。

同样,它可能会被优化很多,但现在这可行!

于 2012-11-25T03:54:24.383 回答