2017-10-16 97 views
3

我正在爲本地表演藝術場所設計一個網站,並且我想添加一些代碼,以便「Events」頁面上的特定活動帖子將自動在活動日期過後,從「活動」移至其他「過去的活動」頁面。我已經查找過針對此查詢的任何現有解決方案,但尚未找到解決方案。在日期過後,自動將Wordpress帖子從一個頁面移動到另一個頁面

+0

你需要考慮的cron。 – Jan

+4

或者您可以爲「Events」頁面創建自定義模板,該頁面僅查詢那些日期高於今天的帖子。 –

+0

^這是唯一的合法答案。使用cron移動帖子是一種不好的方式,因爲我們根本不需要機器的能力,因爲我們可以簡單地通過日期時間來查詢它。克倫族在這裏有些壓迫。 –

回答

1

創建一個子主題或添加page-events.php和page-past-performances.php,你可以複製/粘貼你當前的主題page.php代碼。

在這裏,您可以選擇兩個選項:

  1. 創建爲每個模板一個特殊的循環。對於網頁events.php:

    <?php 
    $today = getdate(); 
    $args = array('date_query' => array(
        array(
        'after' => array(
         'year' => $today['year'], 
         'month' => $today['mon'], 
         'day' => $today['mday'], 
        ), 
        'inclusive' => true 
    ) 
    )); 
    $query = WP_Query($args); 
    //Here goes the loop 
    

    對於網頁過去-performances.php:

    <?php 
    $today = getdate(); 
    $args = array('date_query' => array(
        array(
        'before' => array(
         'year' => $today['year'], 
         'month' => $today['mon'], 
         'day' => $today['mday'], 
        ), 
        inclusive => false 
    ) 
    )); 
    $query = WP_Query($args); 
    //Here goes the loop 
    
  2. 第二個選項使用行動掛鉤pre_get_posts,它可能是這個樣子(內你的functions.php文件):

    <?php 
    add_action('pre_get_posts', 'date_filter'); 
    function date_filter($query) { 
        if($query->pagename == 'events') { 
        $query->set('date_query', [[ 
         'after' => //same as above 
         'inclusive' => true 
        ]]); 
        } 
        if($query->pagename == 'past-performances') { 
        $query->set('date_query', [[ 
         'before' => //same as above 
         'inclusive' => false 
        ]]); 
        } 
    } 
    ?> 
    
相關問題