0x1998 - MANAGER
Düzenlenen Dosya: query-results.php
<?php namespace Jet_Engine\Query_Builder\Macros; use Jet_Engine\Query_Builder\Manager; class Query_Results_Macro extends \Jet_Engine_Base_Macros { /** * @inheritDoc */ public function macros_tag() { return 'query_results'; } /** * @inheritDoc */ public function macros_name() { return esc_html__( 'Query Results', 'jet-engine' ); } /** * @inheritDoc */ public function macros_args() { return array( 'query_id' => array( 'label' => __( 'Query', 'jet-engine' ), 'type' => 'select', 'options' => function() { $queries = Manager::instance()->get_queries_for_options(); $page = Manager::instance()->get_current_page(); if ( $page && 'edit' === $page->get_slug() && $page->item_id() && isset( $queries[ $page->item_id() ] ) ) { unset( $queries[ $page->item_id() ] ); } return $queries; }, ), 'result_type' => array( 'label' => esc_html__( 'Return', 'jet-engine' ), 'type' => 'select', 'default' => 'ids', 'options' => array( 'ids' => esc_html__( 'List of items IDs', 'jet-engine' ), 'all' => esc_html__( 'List of items objects', 'jet-engine' ), 'selected' => esc_html__( 'List of selected fields from item object', 'jet-engine' ), ), ), 'result_fields' => array( 'label' => esc_html__( 'Comma-separated fields list', 'jet-engine' ), 'type' => 'text', 'default' => 'ID', 'condition' => array( 'result_type' => array( 'selected' ) ), ), ); } /** * @inheritDoc */ public function macros_callback( $args = array() ) { $query_id = ! empty( $args['query_id'] ) ? $args['query_id'] : false; $result_type = ! empty( $args['result_type'] ) ? $args['result_type'] : 'ids'; if ( ! $query_id ) { return array(); } $query = Manager::instance()->get_query_by_id( $query_id ); if ( ! $query ) { return array(); } $items = $query->get_items(); if ( empty( $items ) || ! is_array( $items ) ) { return false; } switch ( $result_type ) { case 'ids': $items = array_map( function( $item ) { return jet_engine()->listings->data->get_current_object_id( $item ); }, $items ); break; case 'selected': $result_fields = ! empty( $args['result_fields'] ) ? $args['result_fields'] : ''; $result_fields = explode( ',', $result_fields ); $items = array_filter( array_map( function( $item ) use ( $result_fields ) { if ( ! $result_fields ) { return $item; } if ( 1 === count( $result_fields ) ) { $field = trim( $result_fields[0] ); return isset( $item->$field ) ? $item->$field : false; } else { $result = array(); $item = get_object_vars( $item ); foreach ( $result_fields as $field ) { $field = trim( $field ); $result[ $field ] = isset( $item[ $field ] ) ? $item[ $field ] : false; } } return $result; }, $items ) ); break; } $items = array_filter( $items ); return ! empty( $items ) ? $items : false; } }
geri dön