因此,我正在使用WordPress REST API,我想引入all the posts from the last 2 weeks个,大约14天.

在WordPress REST API参数中,我可能可以使用beforeafter参数(https://developer.wordpress.org/rest-api/reference/posts/#example-request),但我不确定如何采用这种方法.

正在使用$response = wp_remote_get调用WordPress REST API端点.

以下是我目前获取所有帖子的完整方法:

public function get_posts_via_rest_api(): array
{
    $page = get_option('global_posts_page');
    if (!$page) {
        $page = 1;
    }
    try {
        $response = wp_remote_get(
            'https://example.com/wp-json/wp/v2/posts?page=' . $page
        );
        if ((!is_wp_error($response)) && (200 === wp_remote_retrieve_response_code($response))) {
            $response_body = json_decode(
                $response['body'],
                false,
                512,
                JSON_THROW_ON_ERROR
            );

            return empty($response_body) ? [] : $response_body;
        }
    } catch (Exception $e) {
        error_log(
            print_r(
                'Error: ' . $e,
                true
            )
        );

        return [];
    }
}

推荐答案

beforeafter的正确格式是ISO8601 so 2022-07-16T20:33:00,在下面的函数中,我将其设置为2周前,午夜后1秒.您可以使用date_format($date, 'Y-m-d\TH:i:s'); https://www.php.net/manual/en/datetime.format.php

public function get_posts_via_rest_api(): array {
    $page_number = get_option( 'global_posts_page' );
    if ( ! $page_number ) {
        $page_number = 1;
    }
    $today     = new DateTime(); // Today.
    $two_weeks = $today->sub( new DateInterval( 'P14D' ) ); // Two weeks ago.
    $after     = $two_weeks->format( 'Y-m-d\T00:00:01' ); // dateformat at midnight.
    try {
        $response = wp_remote_get(
            'https://example.com/wp-json/wp/v2/posts?page=' . $page_number . '&after=' . $after
        );
        if ( ( ! is_wp_error( $response ) ) && ( 200 === wp_remote_retrieve_response_code( $response ) ) ) {
            $response_body = json_decode(
                $response['body'],
                false,
                512,
                JSON_THROW_ON_ERROR
            );

            return empty( $response_body ) ? array() : $response_body;
        }
    } catch ( Exception $e ) {
        error_log(
            print_r(
                'Error: ' . $e,
                true
            )
        );

    }
    return array();
}

Php相关问答推荐

有条件的运费率基于购物车小计与WooPayments货币转换

如何使用属性#[Embedded]嵌入带有规则的对象集合?

如何在Woocommerce中禁用机器人添加到推车?

如何使用php-amqplib连接到ActiveMQ Classic Docker镜像

MULTI UPDATE Laravel为什么只能更新我的第一行

Laravel:测试命令时无法获取工作通知::AssertSentTo

如何在PHP中出现弃用警告时触发错误?

我必须对所有的SQL查询使用预准备语句吗?

只收取WooCommerce中最高的运费

FlySystem v3:使用本地适配器时出现问题

htaccess重命名index.php以在URL中显示为SEO的友好名称

使用HPOS过滤WooCommerce中的订单列表

Mockery在模拟Redis连接时抛出错误:Mockery\Exception\BadMethodCallException

允许在WooCommerce管理订单列表中使用计费邮箱进行搜索

根据WooCommerce的定制订单状态增加产品库存

Shopware 6插件:由于删除了配置密钥,更新后配置值不正确

如何使用 PHP 创建简化的 twig 替换?

正则表达式将文本替换为标签 html 以字符开头

如何在 laravel 中的同一个 slug 上显示不同的内容?

在帖子内容中使用短代码触发 Woocommerce 挂钩