PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.13.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.13.0
2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 All 80 releases
ablocks / addons / theme-builder / ajax / posts.php

posts.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.13.0, at addons/theme-builder/ajax/posts.php

110 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ABlocksThemeBuilder\Ajax;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 use ABlocks\Classes\AbstractAjaxHandler;
10
11 class Posts extends AbstractAjaxHandler {
12 protected $namespace = ABLOCKS_PLUGIN_SLUG . '_theme_builder';
13 public function __construct() {
14 $this->actions = array(
15 'search_anything' => array(
16 'callback' => array( $this, 'search_anything' ),
17 'capability' => 'ablocks_manage_theme_builder',
18 'fields' => array(
19 'keyword' => 'string'
20 )
21 ),
22 );
23 }
24 public function search_anything() {
25 // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
26 $search_string = isset( $_POST['keyword'] ) ? sanitize_text_field( $_POST['keyword'] ) : '';
27 $result = array();
28
29 $args = array(
30 'public' => true,
31 '_builtin' => false,
32 );
33
34 $post_types = get_post_types( $args, 'names', 'and' );
35 unset( $post_types['ablocks_tb'] );
36 $post_types['Posts'] = 'post';
37 $post_types['Pages'] = 'page';
38
39 foreach ( $post_types as $key => $post_type ) {
40 $data = array();
41 $query = new \WP_Query(array(
42 's' => $search_string,
43 'post_type' => $post_type,
44 'posts_per_page' => -1,
45 ));
46
47 if ( $query->have_posts() ) {
48 while ( $query->have_posts() ) {
49 $query->the_post();
50 $title = get_the_title();
51 $title .= ( 0 != $query->post->post_parent ) ? ' (' . get_the_title( $query->post->post_parent ) . ')' : '';
52 $id = get_the_id();
53 $data[] = [
54 'label' => $title,
55 'value' => 'post-' . $id,
56 ];
57 }
58 }
59
60 if ( ! empty( $data ) ) {
61 $result[] = [
62 'label' => $key,
63 'options' => $data,
64 ];
65 }
66 }//end foreach
67
68 wp_reset_postdata();
69
70 // Search in taxonomies
71 $taxonomies = get_taxonomies( array( 'public' => true ), 'objects', 'and' );
72 foreach ( $taxonomies as $taxonomy ) {
73 $terms = get_terms(array(
74 'taxonomy' => $taxonomy->name,
75 'orderby' => 'count',
76 'hide_empty' => 0,
77 'name__like' => $search_string,
78 ));
79
80 $data = array();
81 $label = ucwords( $taxonomy->label );
82
83 if ( ! empty( $terms ) ) {
84 foreach ( $terms as $term ) {
85 $term_taxonomy_name = ucfirst( str_replace( '_', ' ', $taxonomy->name ) );
86
87 $data[] = [
88 'label' => $term->name . ' archive page',
89 'value' => 'tax-' . $term->term_id,
90 ];
91
92 $data[] = [
93 'label' => 'All singulars from ' . $term->name,
94 'value' => 'tax-' . $term->term_id . '-single-' . $taxonomy->name,
95 ];
96 }
97 }
98
99 if ( ! empty( $data ) ) {
100 $result[] = [
101 'label' => $label,
102 'options' => $data,
103 ];
104 }
105 }//end foreach
106
107 wp_send_json_success( $result );
108 }
109 }
110