Overview

Classes

  • Papi_Admin
  • Papi_Admin_Ajax
  • Papi_Admin_Assets
  • Papi_Admin_Management_Pages
  • Papi_Admin_Menu
  • Papi_Admin_Meta_Box
  • Papi_Admin_Meta_Box_Tabs
  • Papi_Admin_Option_Handler
  • Papi_Admin_Post_Handler
  • Papi_Admin_View
  • Papi_Attachment_Type
  • Papi_Conditional_Rules
  • Papi_Container
  • Papi_Core_Autoload
  • Papi_Core_Conditional
  • Papi_Core_Conditional_Rule
  • Papi_Core_Data_Handler
  • Papi_Core_Page
  • Papi_Core_Property
  • Papi_Core_Type
  • Papi_Loader
  • Papi_Option_Page
  • Papi_Option_Type
  • Papi_Page_Type
  • Papi_Page_Type_Meta
  • Papi_Porter
  • Papi_Porter_Driver
  • Papi_Porter_Driver_Core
  • Papi_Post_Page
  • Papi_Property
  • Papi_Property_Bool
  • Papi_Property_Checkbox
  • Papi_Property_Color
  • Papi_Property_Datetime
  • Papi_Property_Divider
  • Papi_Property_Dropdown
  • Papi_Property_Editor
  • Papi_Property_Email
  • Papi_Property_File
  • Papi_Property_Flexible
  • Papi_Property_Gallery
  • Papi_Property_Hidden
  • Papi_Property_Html
  • Papi_Property_Image
  • Papi_Property_Link
  • Papi_Property_Number
  • Papi_Property_Post
  • Papi_Property_Radio
  • Papi_Property_Reference
  • Papi_Property_Relationship
  • Papi_Property_Repeater
  • Papi_Property_String
  • Papi_Property_Term
  • Papi_Property_Text
  • Papi_Property_Url
  • Papi_Property_User

Functions

  • current_page
  • papi
  • papi_action_delete_value
  • papi_action_include
  • papi_append_post_type_query
  • papi_body_class
  • papi_cache_delete
  • papi_cache_get
  • papi_cache_key
  • papi_cache_set
  • papi_camel_case
  • papi_cast_string_value
  • papi_convert_to_string
  • papi_current_user_is_allowed
  • papi_dashify
  • papi_delete_field
  • papi_delete_option
  • papi_delete_property_meta_value
  • papi_display_page_type
  • papi_doing_ajax
  • papi_esc_html
  • papi_f
  • papi_field
  • papi_field_shortcode
  • papi_field_value
  • papi_fields
  • papi_filter_conditional_rule_allowed
  • papi_filter_core_load_one_type_on
  • papi_filter_format_value
  • papi_filter_load_value
  • papi_filter_settings_directories
  • papi_filter_settings_only_page_type
  • papi_filter_settings_page_type_column_title
  • papi_filter_settings_show_page_type
  • papi_filter_settings_show_standard_page_type
  • papi_filter_settings_show_standard_page_type_in_filter
  • papi_filter_settings_sort_order
  • papi_filter_settings_standard_page_description
  • papi_filter_settings_standard_page_name
  • papi_filter_settings_standard_page_thumbnail
  • papi_filter_update_value
  • papi_from_property_array_slugs
  • papi_get_all_files_in_directory
  • papi_get_all_page_type_files
  • papi_get_all_page_types
  • papi_get_box_property
  • papi_get_class_name
  • papi_get_field
  • papi_get_file_path
  • papi_get_number_of_pages
  • papi_get_only_objects
  • papi_get_option
  • papi_get_options_and_properties
  • papi_get_or_post
  • papi_get_page
  • papi_get_page_new_url
  • papi_get_page_query_strings
  • papi_get_page_type
  • papi_get_page_type_base_path
  • papi_get_page_type_by_id
  • papi_get_page_type_by_post_id
  • papi_get_page_type_id
  • papi_get_page_type_key
  • papi_get_page_type_meta_value
  • papi_get_page_type_name
  • papi_get_page_type_template
  • papi_get_parent_post_id
  • papi_get_post_id
  • papi_get_post_type
  • papi_get_post_type_label
  • papi_get_post_types
  • papi_get_property_class_name
  • papi_get_property_meta_value
  • papi_get_property_options
  • papi_get_property_type
  • papi_get_property_type_key
  • papi_get_property_type_key_f
  • papi_get_qs
  • papi_get_sanitized_post
  • papi_get_slugs
  • papi_get_tab_options
  • papi_html_name
  • papi_html_tag
  • papi_include_template
  • papi_is_empty
  • papi_is_json
  • papi_is_method
  • papi_is_option_page
  • papi_is_option_type
  • papi_is_page_type
  • papi_is_property
  • papi_is_property_type_key
  • papi_is_rule
  • papi_management_page_type_render_box
  • papi_maybe_convert_to_array
  • papi_maybe_convert_to_object
  • papi_maybe_get_callable_value
  • papi_maybe_json_decode
  • papi_maybe_json_encode
  • papi_nl2br
  • papi_option_shortcode
  • papi_option_type_exists
  • papi_page_type_exists
  • papi_populate_properties
  • papi_property
  • papi_remove_papi
  • papi_remove_trailing_quotes
  • papi_render_html_tag
  • papi_render_properties
  • papi_render_property
  • papi_require_text
  • papi_required_html
  • papi_rule
  • papi_santize_data
  • papi_set_page_type_id
  • papi_setup_tabs
  • papi_slugify
  • papi_sort_order
  • papi_tab
  • papi_template
  • papi_template_include
  • papi_to_array
  • papi_to_property_array_slugs
  • papi_translate_keys
  • papi_underscorify
  • papi_update_field
  • papi_update_option
  • papi_update_property_meta_value
  • papi_with
  • papify
  • the_papi_field
  • the_papi_option
  • the_papi_page_type_name
  • Overview
  • Class
  1: <?php
  2: 
  3: /**
  4:  * Property that shows which relationships that exists
  5:  * between the current post and other posts.
  6:  */
  7: class Papi_Property_Reference extends Papi_Property {
  8: 
  9:     /**
 10:      * Get default settings.
 11:      *
 12:      * @return array
 13:      */
 14:     public function get_default_settings() {
 15:         return [
 16:             'slug'      => [],
 17:             'page_type' => []
 18:         ];
 19:     }
 20: 
 21:     /**
 22:      * Render property html.
 23:      */
 24:     public function html() {
 25:         $post_id  = papi_get_post_id();
 26:         $settings = $this->get_settings();
 27: 
 28:         // Create query array for every page type.
 29:         $page_types = array_map( function ( $page_type ) {
 30:             return [
 31:                 'key'     => papi_get_page_type_key(),
 32:                 'value'   => $page_type,
 33:                 'compare' => 'LIKE'
 34:             ];
 35:         }, papi_to_array( $settings->page_type ) );
 36: 
 37:         // Add relation.
 38:         $page_types['relation'] = 'OR';
 39: 
 40:         // Prepare arguments for WP_Query.
 41:         $args = [
 42:             'post_type'              => 'any',
 43:             'no_found_rows'          => true,
 44:             'update_post_meta_cache' => false,
 45:             'update_post_term_cache' => false,
 46:             'meta_query'             => $page_types
 47:         ];
 48: 
 49:         $query = new WP_Query( $args );
 50:         $posts = $query->get_posts();
 51: 
 52:         $values = [];
 53: 
 54:         foreach ( papi_to_array( $settings->slug ) as $slug ) {
 55:             foreach ( $posts as $post ) {
 56:                 $val = papi_get_field( $post->ID, $slug );
 57: 
 58:                 $val = array_filter( papi_to_array( $val ), function ( $item ) use ( $post_id ) {
 59:                     return is_object( $item ) && $item->ID === $post_id;
 60:                 } );
 61: 
 62:                 if ( empty( $val ) ) {
 63:                     continue;
 64:                 }
 65: 
 66:                 $page_type = papi_get_page_type_by_post_id( $post->ID );
 67: 
 68:                 if ( empty( $page_type ) ) {
 69:                     continue;
 70:                 }
 71: 
 72:                 // Create the array
 73:                 if ( ! isset( $values[$post->post_type] ) ) {
 74:                     $values[$post->post_type] = [];
 75:                 }
 76: 
 77:                 if ( ! isset( $values[$post->post_type][$page_type->name] ) ) {
 78:                     $values[$post->post_type][$page_type->name] = [];
 79:                 }
 80: 
 81:                 // Add the post
 82:                 if ( ! isset( $values[$post->post_type][$page_type->name][$post->ID] ) && ! empty( $val ) ) {
 83:                     $values[$post->post_type][$page_type->name][$post->ID] = $post;
 84:                 }
 85:             }
 86:         }
 87: 
 88:         ?>
 89:         <ul class="papi-property-reference" data-papi-rule="<?php echo $this->html_name(); ?>">
 90:             <?php if ( empty( $values ) ): ?>
 91:                 <p>
 92:                     <?php _e( 'No references exists', 'papi' ); ?>
 93:                 </p>
 94:             <?php
 95:             endif;
 96:             ksort( $values ); foreach ( $values as $title => $val ):
 97:                 $post_type = get_post_type_object( $title );
 98:                 ?>
 99:                 <li>
100:                     <h3><?php echo $post_type->labels->name; ?></h3>
101:                     <div class="handlediv" title="Click to toggle"><br></div>
102:                 </li>
103:                 <li>
104:                     <div class="page-types">
105:                         <ul>
106:                             <?php ksort( $val ); foreach ( $val as $name => $posts ): ?>
107:                                 <li class="heading-border">
108:                                     <h4><?php echo $name; ?></h4>
109:                                     <div class="handlediv" title="Click to toggle"><br></div>
110:                                 </li>
111:                                 <li>
112:                                     <div class="box">
113:                                         <?php $i = 0;
114:                                         foreach ( $posts as $post ): ?>
115:                                             <a href="<?php echo get_edit_post_link( $post->ID ); ?>"><?php echo $post->post_title; ?></a>
116:                                         <?php $i++;
117:                                         endforeach; ?>
118:                                         <div class="clear"></div>
119:                                     </div>
120:                                 </li>
121:                             <?php endforeach; ?>
122:                         </ul>
123:                         <div class="clear"></div>
124:                     </div>
125:                 </li>
126:             <?php endforeach; ?>
127:         </ul>
128:         <?php
129:     }
130: }
131: 
API documentation generated by ApiGen