LLMS_Post_Model::toArray()
Coverts the object to an associative array
Description Description
Any property returned by $this->get_properties() will be retrieved via $this->get() and added to the array.
Extending classes can add additional properties to the array by overriding $this->toArrayAfter().
This function is also utilized to serialize the object to JSON.
Return Return
(array)
Source Source
File: includes/abstracts/abstract.llms.post.model.php
public function toArray() {
$arr = array(
'id' => $this->get( 'id' ),
);
foreach ( $this->get_to_array_properties() as $prop ) {
if ( in_array( $prop, array( 'content', 'excerpt', 'title' ), true ) ) {
$post_prop = "post_{$prop}";
$arr[ $prop ] = $this->post->$post_prop;
} else {
$arr[ $prop ] = $this->get( $prop );
}
}
// Add the featured image if the post type supports it.
if ( post_type_supports( $this->db_post_type, 'thumbnail' ) ) {
$arr['featured_image'] = $this->get_image( 'full', 'thumbnail' );
}
// Expand instructors if instructors are supported.
if ( ! empty( $arr['instructors'] ) && method_exists( $this, 'instructors' ) ) {
foreach ( $arr['instructors'] as &$data ) {
$instructor = llms_get_instructor( $data['id'] );
if ( $instructor ) {
$data = array_merge( $data, $instructor->toArray() );
}
}
} elseif ( ! empty( $arr['author'] ) ) {
$instructor = llms_get_instructor( $arr['author'] );
if ( $instructor ) {
$arr['author'] = $instructor->toArray();
}
}
/**
* Filter whether or not "extra" content should be included in the post array
*
* `__return_true` (with priority 99) is used to force the filter on during exports.
*
* @since 4.8.0
*
* @param boolean $include Whether or not to include extra data. Default is `false`, except on during exports.
* @param LLMS_Post_Model $model Post model instance.
*/
$add_array_extra = apply_filters( 'llms_post_model_to_array_add_extras', false, $this );
/**
* Filter whether or not "extra" content should be included in the post array
*
* The dynamic portion of this hook, `$this->model_post_type`, refers to the model's post type. For example "course",
* "lesson", "membership", etc...
*
* @since 4.7.0
*
* @param boolean $include Whether or not to include extra data.
* @param LLMS_Post_Model $model Post model instance.
*/
$add_array_extra = apply_filters( "llms_{$this->model_post_type}_to_array_add_extras", $add_array_extra, $this );
if ( $add_array_extra ) {
$arr = $this->to_array_extra( $arr );
}
// Add custom fields.
$arr = $this->toArrayCustom( $arr );
// Allow extending classes to add properties easily without overriding the class.
$arr = $this->toArrayAfter( $arr );
$cpt_data = $this->get_post_type_data();
if ( $cpt_data->public ) {
$arr['permalink'] = get_permalink( $this->get( 'id' ) );
}
ksort( $arr ); // Because i'm anal...
/**
* Filter the final post array created when converting the object to an array
*
* The dynamic portion of this hook, `$this->model_post_type`, refers to the model's post type. For example "course",
* "lesson", "membership", etc...
*
* @since 4.7.0
*
* @param array $arr Associative array of the model.
* @param LLMS_Post_Model $model Post model instance.
*/
return apply_filters( "llms_{$this->model_post_type}_to_array", $arr, $this );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 5.4.1 | Load properties to be used to generate the array from the new get_to_array_properties() method. |
| 4.8.0 | Exclude extra data by default. Added llms_post_model_to_array_add_extras filter. |
| 4.7.0 | Add exporting of extra data (images and blocks). |
| 3.3.0 | |
| 3.17.0 | Introduced. |