Обновление пользовательских полей при отправке с метаданными - PullRequest
0 голосов
/ 23 января 2019

Этот плагин был разработан в сотрудничестве с программистом.Это всего 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и это было бы позором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...