该插件是与程序员合作开发的。它只有1个具有某些功能的文件,我认为它几乎完成了,但我再也无法联系到程序员了。这是代码:
<?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 "</pre><br>";
}
该插件应该做的是:
举一个例子: 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填写页面上的新表格时,则必须使用新分数(rwp_user_score)更新其所有child_pages中所有custom_fields average_score_provider的值。
我认为程序员非常亲密,他甚至说已经完成了。但是,当我测试它时,什么也没有发生。也许在代码中有一个小错误,为什么它不起作用。
如果有人可以轻率地看一下,那就太好了。否则,我不得不再次雇用一个新的程序员,这将是一个耻辱。