【问题标题】:Automatically move Wordpress post from one page to another after date has passed日期过后自动将 Wordpress 帖子从一页移动到另一页
【发布时间】:2018-03-27 21:05:06
【问题描述】:

我正在为当地表演艺术场所设计一个网站,我想添加一些代码,以便“活动”页面上的特定活动帖子会自动从“活动”移动到不同的“过去的表演”活动日期过后的页面。我四处寻找该查询的任何现有解决方案,但尚未找到。

【问题讨论】:

  • 你需要查看 cron。
  • 或者您可以为Events 页面创建自定义模板,仅查询日期早于今天的帖子。
  • ^ 这是唯一合法的答案。使用 cron 移动帖子是一种不好的方式,因为我们根本不需要机器的能力,因为我们可以简单地通过日期时间查询它。 Cron 在这里有点被压倒了。

标签: javascript php wordpress


【解决方案1】:

创建子主题或添加 page-events.php 和 page-past-performances.php,您可以复制/粘贴当前主题 page.php 代码。

这里你可以选择2个选项:

  1. 为每个模板创建一个特殊的循环。对于 page-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
    

    对于 page-past-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 
        ]]);
      }
    }
    ?>
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多