Этот плагин был разработан в сотрудничестве с программистом.Это всего 1 файл с некоторыми функциями, и я думаю, что он почти закончен, но я больше не могу связаться с программистом.Это код:
<code><?php
// Action to execute when new review score submitted
add_action('rwp_after_saving_review', 'hk_update_review_score', 11, 2);
//add_shortcode('hkupdaterev', 'display_hk_reviews'); // test shortcode
// Action to execute when post meta score updated, then update the child pages
add_action( 'added_post_meta', 'hk_after_post_review', 100, 4 );
add_action( 'updated_post_meta', 'hk_after_post_review', 100, 4 );
// Action after score submitted
function hk_after_post_review( $meta_id, $post_id, $meta_key, $meta_value ) {
$hk_query = new WP_Query();
if( $meta_key === 'rwp_user_score' ){
// Find the child pages
$child_pages = $hk_query->query(array(
'post_type' => 'page',
'post_status' => 'publish',
'post_parent' => $post_id,
));
// Get the average score
$score = get_post_meta( $post_id, 'rwp_user_score', true );
// Now loop the child pages, and update the score
foreach($child_pages as $child){
$child_id = $child->ID;
// update the score
update_field('average_score_provider', $score, $child_id);
}
}
}
function hk_update_review_score($the_review, $meta_id){
// Get the review meta data by meta_id
$meta_data = get_metadata_by_mid('post',$meta_id);
// Get the parent post_id (page ID)
$page_id = $meta_data->post_id;
//do_action(array( 'RWP_User_Review', 'update_postmeta_scores'), array($page_id, '0'));
// Reviewer plugin using schedule cronjob to update the score average, so we need to calculate immediately
$reviews = get_post_meta( intval( $page_id ), 'rwp_rating_0' );
$reviews = is_array( $reviews ) ? $reviews : array();
$scores = array();
foreach ($reviews as $review) {
if( ! isset($review['rating_score']) || !is_array($review['rating_score']) ) {
continue;
}
$avg = hk_get_avg( $review['rating_score'] );
$scores[] = $avg;
}
$score = hk_get_avg( $scores );
// Update the average score
update_post_meta( $page_id, 'rwp_user_score', $score );
}
// Calculate the average score - Taken from the Reviewer plugin, so the number should be the same.
function hk_get_avg( $scores = array() )
{
if (!is_array($scores))
return 1;
if( count( $scores) == 0 )
return 0;
$tot = array_sum($scores);
$avg = $tot / count( $scores );
return $avg;
}
// Test function.
function display_hk_reviews(){
echo "RES: <br>";
$mid = 7691;
$data = get_metadata_by_mid('post',$mid);
echo "<br>Meta data: <pre>";
print_r($data->post_id);
echo "
";}
Что должен делать этот плагин:
Чтобы набросать пример: parentpage_id = 44
На каждой родительской странице есть форма, при заполнении которой поле meta_field (rwp_user_score) обновляется.
Если это сделано, вы можете вызвать функцию:
add_action ('rwp_after_saving_review', 'hk_update_review_score', 11, 2);
Затем эта функция должна выполнить следующее: каждая родительская страница имеет несколько дочерних страниц с полем custum с именем (average_score_provider).
Поэтому, когда кто-то заполняет новую форму на странице с page_ID 44, тогда значение всех настраиваемых полейAverage_score_provider всех его child_pages должен быть обновлен с новым счетом (rwp_user_score).
Я думаю, что программист был очень близок, и он даже сказал, что это было сделано. Однако, когда я проверяю это, ничего не происходит. Может быть, естьнебольшая ошибка в коде, почему он не работает.
Если кто-то может взглянуть на qiuck, это было бы здорово. В противном случае я должен нанять нового программиста agaiи это было бы позором.