AP_QA_Query_Hooks::posts_results( array $posts, object $instance )
Description #
Add qameta fields to post and prefetch metas and users.
Parameters #
- $postsarray (Required) Post array.
- $instanceobject (Required) QP_Query instance.
Source #
File: includes/qaquery-hooks.php
public static function posts_results( $posts, $instance ) {
global $question_rendered;
foreach ( (array) $posts as $k => $p ) {
if ( in_array( $p->post_type, array( 'question', 'answer' ), true ) ) {
// Convert object as array to prevent using __isset of WP_Post.
$p_arr = (array) $p;
// Check if ptype exists which is a qameta field.
if ( ! empty( $p_arr['ptype'] ) ) {
$qameta = ap_qameta_fields();
} else {
$qameta = ap_get_qameta( $p->ID );
}
foreach ( (array) $qameta as $fields_name => $val ) {
if ( ! isset( $p_arr[ $fields_name ] ) || empty( $p_arr[ $fields_name ] ) ) {
$p->$fields_name = $val;
}
}
// Serialize fields and activities.
$p->activities = maybe_unserialize( $p->activities );
$p->fields = maybe_unserialize( $p->fields );
$p->ap_qameta_wrapped = true;
$p->votes_net = $p->votes_up - $p->votes_down;
// Unset if user cannot read.
if ( ! ap_user_can_read_post( $p, false, $p->post_type ) ) {
if ( $instance->is_single() && $instance->is_main_query() ) {
$posts[ $k ] = self::imaginary_post( $p );
} else {
unset( $posts[ $k ] );
}
} else {
$posts[ $k ] = $p;
}
}
}
if ( isset( $instance->query['ap_question_query'] ) || isset( $instance->query['ap_answers_query'] ) ) {
$instance->pre_fetch();
}
return $posts;
}
Expand full source code Collapse full source code View on GitHub: includes/qaquery-hooks.php:132
Add your comment