通过ACF更改wp_get_archives

时间:2016-07-20 07:32:34

标签: php wordpress

我希望逐年显示帖子的存档,因此显示年份和点击时,查看该特定年份的所有帖子。问题是我希望它们不是由post_date(默认行为)显示,而是由自定义日期(使用ACF制作的自定义字段)显示。 是否有任何钩子可以更改wp_get_archives功能以接收ACF的帖子?

1 个答案:

答案 0 :(得分:0)

我最近在一个项目中有类似的要求。我们发现从datepicker获取值并使用post_date挂钩将其作为wp_post_update()应用是最简单的。

function my_acf_save_post( $post_id ) {

    // get new value
    $theDate = get_field('post-date', $post_id, false);
    $theDate = date_create_from_format('Ymd', $theDate);
    $theDate = date_format($theDate, 'Y-m-d H:i:s');

    $my_post = array(
      'ID'           => $post_id,
      'post_date'   => $theDate,
    );
    // do something

    // unhook this function so it doesn't loop infinitely
    remove_action('acf/save_post', 'my_acf_save_post');

    // update the post, which calls save_post again
    wp_update_post( $my_post );

    // re-hook this function
    add_action('acf/save_post', 'my_acf_save_post');

}

// run after ACF saves the $_POST['acf'] data
add_action('acf/save_post', 'my_acf_save_post', 20);

以上代码片段由James在ACF支持论坛上提供,但为我们工作。这个解决方案的一个缺点是,如果日期是将来的话,帖子将被安排而不是发布。