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:  * Delete value in the database.
  5:  *
  6:  * @param  int    $post_id
  7:  * @param  string $slug
  8:  * @param  string $type
  9:  *
 10:  * @return bool
 11:  */
 12: function papi_delete_field( $post_id = null, $slug = null, $type = 'post' ) {
 13:     if ( ! is_numeric( $post_id ) && is_string( $post_id ) ) {
 14:         $slug    = $post_id;
 15:         $post_id = null;
 16:     }
 17: 
 18:     if ( ! is_string( $slug ) || empty( $slug ) ) {
 19:         return false;
 20:     }
 21: 
 22:     $post_id = papi_get_post_id( $post_id );
 23: 
 24:     if ( $post_id === 0 && $type === Papi_Core_Page::TYPE_POST ) {
 25:         return false;
 26:     }
 27: 
 28:     $page = papi_get_page( $post_id, $type );
 29: 
 30:     if ( is_null( $page ) ) {
 31:         return false;
 32:     }
 33: 
 34:     $property = $page->get_property( $slug );
 35: 
 36:     if ( ! papi_is_property( $property ) ) {
 37:         return false;
 38:     }
 39: 
 40:     papi_cache_delete( $slug, $post_id );
 41: 
 42:     papi_action_delete_value( $type, $slug, $post_id );
 43: 
 44:     return $property->delete_value( $slug, $post_id, $type );
 45: }
 46: 
 47: /**
 48:  * Shortcode for `papi_get_field` function.
 49:  *
 50:  * [papi_field id=1 slug="field_name" default="Default value"][/papi_field]
 51:  *
 52:  * @param  array $atts
 53:  *
 54:  * @return mixed
 55:  */
 56: function papi_field_shortcode( $atts ) {
 57:     $atts['id'] = isset( $atts['id'] ) ? $atts['id'] : 0;
 58:     $atts['id'] = papi_get_post_id( $atts['id'] );
 59:     $default    = isset( $atts['default'] ) ? $atts['default'] : '';
 60: 
 61:     if ( empty( $atts['id'] ) || empty( $atts['slug'] ) ) {
 62:         $value = $default;
 63:     } else {
 64:         $value = papi_get_field( $atts['id'], $atts['slug'], $default );
 65:     }
 66: 
 67:     if ( is_array( $value ) ) {
 68:         $value = implode( ', ', $value );
 69:     }
 70: 
 71:     return $value;
 72: }
 73: 
 74: add_shortcode( 'papi_field', 'papi_field_shortcode' );
 75: 
 76: /**
 77:  * Get field value by keys.
 78:  *
 79:  * Example:
 80:  *
 81:  * "image.url" will get the url value in the array.
 82:  *
 83:  * @param  array $slugs
 84:  * @param  mixed $value
 85:  * @param  mixed $default
 86:  *
 87:  * @return mixed
 88:  */
 89: function papi_field_value( $slugs, $value, $default = null ) {
 90:     if ( empty( $value ) && is_null( $value ) ) {
 91:         return $default;
 92:     }
 93: 
 94:     if ( ! empty( $slugs ) && ( is_object( $value ) || is_array( $value ) ) ) {
 95: 
 96:         if ( is_object( $value ) ) {
 97:             $value = (array) $value;
 98:         }
 99: 
100:         foreach ( $slugs as $key ) {
101:             if ( isset( $value[ $key ] ) ) {
102:                 $value = $value[ $key ];
103:             }
104:         }
105:     }
106: 
107:     return $value;
108: }
109: 
110: /**
111:  * Get value for a property on a page.
112:  *
113:  * @param  int    $post_id
114:  * @param  string $slug
115:  * @param  mixed  $default
116:  * @param  string $type
117:  *
118:  * @return mixed
119:  */
120: function papi_get_field( $post_id = null, $slug = null, $default = null, $type = 'post' ) {
121:     if ( ! is_numeric( $post_id ) && is_string( $post_id ) ) {
122:         $default = $slug;
123:         $slug    = $post_id;
124:         $post_id = null;
125:     }
126: 
127:     if ( ! is_string( $slug ) || empty( $slug ) ) {
128:         return $default;
129:     }
130: 
131:     $post_id = papi_get_post_id( $post_id );
132: 
133:     if ( $post_id === 0 && $type === Papi_Core_Page::TYPE_POST ) {
134:         return $default;
135:     }
136: 
137:     $value = papi_cache_get( $slug, $post_id );
138: 
139:     if ( $value === null || $value === false ) {
140:         // Check for "dot" notation.
141:         $slugs = explode( '.', $slug );
142:         $slug  = $slugs[0];
143:         $slugs = array_slice( $slugs, 1 );
144: 
145:         // Get the right page for right data type.
146:         $page = papi_get_page( $post_id, $type );
147: 
148:         // Return the default value if we don't have a valid page.
149:         if ( is_null( $page ) ) {
150:             return $default;
151:         }
152: 
153:         $value = papi_field_value( $slugs, $page->get_value( $slug ), $default );
154: 
155:         if ( papi_is_empty( $value ) ) {
156:             return $default;
157:         }
158: 
159:         papi_cache_set( $slug, $post_id, $value );
160:     }
161: 
162:     return $value;
163: }
164: 
165: /**
166:  * Update field with new value. The old value will be deleted.
167:  *
168:  * @param  int    $post_id
169:  * @param  string $slug
170:  * @param  mixed  $value
171:  * @param  string $type
172:  *
173:  * @return bool
174:  */
175: function papi_update_field( $post_id = null, $slug = null, $value = null, $type = 'post' ) {
176:     if ( ! is_numeric( $post_id ) && is_string( $post_id ) ) {
177:         $value   = $slug;
178:         $slug    = $post_id;
179:         $post_id = null;
180:     }
181: 
182:     if ( ! is_string( $slug ) || empty( $slug ) ) {
183:         return false;
184:     }
185: 
186:     if ( papi_is_empty( $value ) ) {
187:         return papi_delete_field( $post_id, $slug, $type );
188:     }
189: 
190:     $post_id = papi_get_post_id( $post_id );
191: 
192:     if ( $post_id === 0 && $type === Papi_Core_Page::TYPE_POST ) {
193:         return false;
194:     }
195: 
196:     $page = papi_get_page( $post_id, $type );
197: 
198:     if ( is_null( $page ) ) {
199:         return false;
200:     }
201: 
202:     $property = $page->get_property( $slug );
203: 
204:     if ( ! papi_is_property( $property ) ) {
205:         return false;
206:     }
207: 
208:     papi_delete_field( $post_id, $slug, $type );
209: 
210:     $value = $property->update_value( $value, $slug, $post_id );
211:     $value = papi_filter_update_value( $property->get_option( 'type' ), $value, $slug, $post_id );
212: 
213:     return papi_update_property_meta_value( [
214:         'post_id'       => $post_id,
215:         'slug'          => $slug,
216:         'value'         => $value
217:     ] );
218: }
219: 
220: /**
221:  * Echo the value for property on a page.
222:  *
223:  * @param int    $post_id
224:  * @param string $slug
225:  * @param mixed  $default
226:  */
227: function the_papi_field( $post_id = null, $slug = null, $default = null ) {
228:     $value = papi_get_field( $post_id, $slug, $default );
229: 
230:     if ( is_array( $value ) ) {
231:         $value = implode( ', ', $value );
232:     }
233: 
234:     echo $value;
235: }
236: 
API documentation generated by ApiGen