在 WpRecipes 網站裡面看到一篇不錯的文章…不!我應該說 WpRecipes 一整個就是個好站,它提供了好多WordPress 進階管理的技巧讓你參考。其中文章自動過期這一篇,我想在一些設定為公告性的文章,是一個很好利用的方式。但是這個網站缺點就是講得太簡潔了,很多技巧它只提供一段範例碼跟簡易的說明就了事,這對 php 不是很熟的我其實還蠻困擾的。
那這裡我就針對這一篇讓文章自動過期的部份,大概說明一下我自己試用的心得。基本上這個網站提供的大都是要直接修改你的佈景主題,而本篇的修改主要是在文章迴圈(The Loop)的那一段。我以 WordPress 2.62 預設佈景主題為例,先開啟 index.php 這個檔案,找到文章迴圈程式碼的啟始段:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
接著把我自己修改過的範例碼貼在 <?php while (have_posts()) : the_post(); ?> 跟 <div class=”post” id=”post-<?php the_ID(); ?>”> 之間:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?><!–// Start of post expiration //–>
<?php
$expirationtime = get_post_custom_values(’expiration’);
if (empty($expirationtime)) {
$expirestring = ‘01/01/2020 00:00:00′;
} else {
if (is_array($expirationtime)) {
$expirestring = implode($expirationtime);
}
}
$secondsbetween = strtotime($expirestring)-time();
if ( $secondsbetween > 0 ) { ?>
<!–// End of post expiration //–><div class=”post” id=”post-<?php the_ID(); ?>”>
接著找往下找 <?php endwhile; ?>,找到後在它的上面一行貼上 <?php } ?>:
<?php } ?>
<?php endwhile; ?>
這樣文章迴圈就改完了。以後只要你在你要設定會過期的文章的自訂欄位(Custom Field)裡,增加一個欄位名稱(Key)叫 expiration,然後欄位內容就以 mm/dd/yy h:m:s 的格式輸入讓文章過期的時間,這樣時間一到文章就不會從迴圈裡面再把它撈出來了。但相對的,其它含有迴圈的佈景檔案也是需要修改的。






發表於: 週二, 十月 21, 2008
標籤: expire, wordpress, 文章, 過期