PluginProbe ʕ •ᴥ•ʔ
Kirki – Freeform Page Builder, Website Builder & Customizer / 6.2.0
Kirki – Freeform Page Builder, Website Builder & Customizer v6.2.0
6.2.0 6.1.1 6.1.0 6.0.14 6.0.13 6.0.12 6.0.11 6.0.10 6.0.9 6.0.8 6.0.7 6.0.6 6.0.5 6.0.4 6.0.3 6.0.2 6.0.1 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.19 4.0.20 4.0.21 4.0.22 4.0.23 4.0.24 4.1 4.2.0 5.0.0 5.1.0 5.1.1 5.2.0 5.2.1 5.2.2 5.2.3 6.0.0 trunk 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.1.0 3.1.1 3.1.2
kirki / app / Traits / SearchablePost.php
kirki / app / Traits Last commit date
HasWordPressPostBehavior.php 1 month ago SearchablePost.php 5 days ago SearchableUser.php 1 month ago
SearchablePost.php
78 lines
1 <?php
2
3 namespace Kirki\App\Traits;
4
5 defined('ABSPATH') || exit;
6
7 use Kirki\App\Constants\PostStatus;
8 use Kirki\Framework\Database\Query\QueryBuilder;
9 use Kirki\Framework\Supports\Arr;
10
11 trait SearchablePost {
12 /**
13 * Search posts
14 *
15 * @param QueryBuilder $query
16 * @param string $keyword
17 * @return QueryBuilder
18 */
19 public function scope_search(QueryBuilder $query, $keyword) {
20 if (!is_string($keyword) || $keyword === '') {
21 return $query;
22 }
23
24 return $query->where(function (QueryBuilder $query) use ($keyword) {
25 $query->where_like('post_title', $keyword . '%')
26 ->or_where_like('post_content', $keyword . '%')
27 ->or_where_like('post_excerpt', $keyword . '%');
28 });
29 }
30
31 /**
32 * Filter posts by status
33 *
34 * @param QueryBuilder $query
35 * @param string|string[] $status
36 *
37 * @return QueryBuilder
38 */
39 public function scope_filter_status(QueryBuilder $query, $status) {
40 $statuses = Arr::wrap($status);
41 $statuses = !in_array('all', $statuses, true) && !in_array('any', $statuses, true) ? $statuses : [];
42
43 if (!empty($statuses)) {
44 return $query->where_in('post_status', $statuses);
45 }
46
47 return $query;
48 }
49
50 /**
51 * Filter posts by post type
52 *
53 * @param QueryBuilder $query
54 * @param string|string[] $post_type
55 *
56 * @return QueryBuilder
57 */
58 public function scope_filter_post_type(QueryBuilder $query, $post_type) {
59 $post_types = Arr::wrap($post_type);
60
61 if (empty($post_types)) {
62 return $query;
63 }
64
65 return $query->where_in('post_type', $post_types);
66 }
67
68 /**
69 * Exclude trashed posts
70 *
71 * @param QueryBuilder $query
72 *
73 * @return QueryBuilder
74 */
75 public function scope_exclude_trash(QueryBuilder $query) {
76 return $query->where_not('post_status', PostStatus::TRASH);
77 }
78 }