PluginProbe
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel / 1.8.0
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel v1.8.0
1.8.0 1.7.1 1.7.0 1.6.0 1.5.2 trunk 0.1 0.2.0 0.2.1 0.3 0.3.1 0.3.2 0.3.3 0.3.4 0.4 0.4.1 0.4.2 0.4.3 1.0 1.1 1.2 1.3.1 1.4.0 1.4.1 1.5.0 All 27 releases
flywp / includes / StaticSite / Engine / Discovery / TaxonomySource.php

TaxonomySource.php in FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel 1.8.0, at includes/StaticSite/Engine/Discovery/TaxonomySource.php

59 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FlyWP\StaticSite\Engine\Discovery;
4
5 /**
6 * Term archives of all public taxonomies, with pagination.
7 *
8 * Generator with term ID batches behind the gateway.
9 *
10 * @since 1.8.0
11 */
12 class TaxonomySource implements UrlSource {
13
14 /**
15 * @var WordPressGateway
16 */
17 private $wp;
18
19 /**
20 * @var int
21 */
22 private $batch_size;
23
24 /**
25 * @param WordPressGateway $wp Gateway.
26 * @param int $batch_size Terms in one query.
27 */
28 public function __construct( WordPressGateway $wp, $batch_size = 500 ) {
29 $this->wp = $wp;
30 $this->batch_size = max( 1, (int) $batch_size );
31 }
32
33 /**
34 * {@inheritdoc}
35 */
36 public function urls() {
37 foreach ( $this->wp->public_taxonomies() as $taxonomy ) {
38 $after_id = 0;
39
40 do {
41 $rows = $this->wp->term_rows( $taxonomy, $after_id, $this->batch_size );
42 $full_batch = count( $rows ) === $this->batch_size;
43
44 foreach ( $rows as $row ) {
45 $after_id = $row['id'];
46 $link = $this->wp->term_link( $row['id'], $taxonomy );
47
48 if ( null === $link ) {
49 continue;
50 }
51
52 yield new DiscoveredUrl( $link, 'term', 'term', $row['id'] );
53 yield from Pagination::urls( $this->wp, $link, $row['count'] );
54 }
55 } while ( $full_batch );
56 }
57 }
58 }
59