myCred - это плагин для WordPress , который позволяет легко создавать Балансы баллов и настраивать шаги, которые пользователи предпринимают для их получения.
Вот ссылки на их плагин с открытым исходным кодом:
Github: https://github.com/wp-plugins/mycred
Сайт myCred: https://mycred.me/
Wordpress: https://wordpress.org/plugins/mycred/
Готов!вот оно: я не могу найти решение, как добавить свои $amount
к $current_balance
, чтобы получить $new_balance
?
Я пробовал что-то подобное уже без удачи:
add_filter('filter_update_users_balance', 'add_my_own_amount');
function add_my_own_amount($amount){
return 10;
}
Давайте рассмотрим файл mycred-functions.php .
Прежде всего, он возвращает баланс пользователей следующим образом: (Я не уверен, нужно ли читать, чтобы решить мою проблему или нет, я рекомендую пропустить это сейчас :))
/**
* Get users balance
* Returns the users balance unformated.
*
* @param $user_id (int), required user id
* @param $type (string), optional cred type to check for
* @returns zero if user id is not set or if no creds were found, else returns amount
* @since 0.1
* @version 1.4.1
*/
public function get_users_balance( $user_id = NULL, $type = NULL ) {
if ( $user_id === NULL ) return $this->zero();
// Type
$point_types = mycred_get_types();
if ( $type === NULL || ! array_key_exists( $type, $point_types ) ) $type = $this->get_cred_id();
$balance = mycred_get_user_meta( $user_id, $type, '', true );
if ( $balance == '' ) $balance = $this->zero();
// Let others play
$balance = apply_filters( 'mycred_get_users_cred', $balance, $this, $user_id, $type );
return $this->number( $balance );
}
// Replaces
public function get_users_cred( $user_id = NULL, $type = NULL ) {
return $this->get_users_balance( $user_id, $type );
}
после этого он Обновляет баланс пользователей например:
здесь у нас есть строка кода $new_balance = $current_balance+$amount;
, которая показывает нам, как плагин возвращает новые балансы пользователей.и в самом низу кода он делает return $this->number( $new_balance );
, поэтому мы можем установить баланс пользователей на основе значения $new_balance
позже.
/**
* Update users balance
* Returns the updated balance of the given user.
*
* @param $user_id (int), required user id
* @param $amount (int|float), amount to add/deduct from users balance. This value must be pre-formated.
* @param $type (string), optional point type key to adjust instead of the current one.
* @returns the new balance.
* @since 0.1
* @version 1.4.2
*/
public function update_users_balance( $user_id = NULL, $amount = NULL, $type = NULL ) {
// Minimum Requirements: User id and amount can not be null
if ( $user_id === NULL || $amount === NULL ) return $amount;
// Type
$point_types = mycred_get_types();
if ( $type === NULL || ! array_key_exists( $type, $point_types ) ) $type = $this->get_cred_id();
// Enforce max
if ( $this->max() > $this->zero() && $amount > $this->max() ) {
$_amount = $amount;
$amount = $this->number( $this->max() );
do_action( 'mycred_max_enforced', $user_id, $_amount, $this->max() );
}
// Adjust creds
$current_balance = $this->get_users_balance( $user_id, $type );
$new_balance = $current_balance+$amount;
// Update creds
mycred_update_user_meta( $user_id, $type, '', $new_balance );
// Update total creds
$total = mycred_query_users_total( $user_id, $type );
mycred_update_user_meta( $user_id, $type, '_total', $total );
// Clear caches
mycred_delete_option( 'mycred-cache-total-' . $type );
// Let others play
do_action( 'mycred_update_user_balance', $user_id, $current_balance, $amount, $type );
// Return the new balance
return $this->number( $new_balance );
}
Тогда это устанавливает баланс пользователей следующим образом:
/**
* Set users balance
* Changes a users balance to the amount given.
*
* @param $user_id (int), required user id
* @param $new_balance (int|float), amount to add/deduct from users balance. This value must be pre-formated.
* @returns (bool) true on success or false on fail.
* @since 1.7.3
* @version 1.0.1
*/
public function set_users_balance( $user_id = NULL, $new_balance = NULL ) {
// Minimum Requirements: User id and amount can not be null
if ( $user_id === NULL || $new_balance === NULL ) return false;
$type = $this->get_cred_id();
$new_balance = $this->number( $new_balance );
$old_balance = $this->get_users_balance( $user_id, $type );
// Update balance
mycred_update_user_meta( $user_id, $type, '', $new_balance );
// Clear caches
mycred_delete_option( 'mycred-cache-total-' . $type );
// Let others play
do_action( 'mycred_set_user_balance', $user_id, $new_balance, $old_balance, $this );
return true;
}
Наконец, в файле mycred-balances.php у нас есть:
// Add to the balance
if ( $method == 'add' )
$mycred->update_users_balance( $user_id, $balance );
// Change the balance
else
$mycred->set_users_balance( $user_id, $balance );
Я провел несколько часов ичасов, чтобы найти решение, Я думаю, что не могу найти решение , поэтому я был бы очень признателен, если бы вы могли помочь мне решить эту проблему.
Редактировать:
Я хочу увеличить значение $amount
myCred со значением моей переменной javascript!Я хочу присвоить переменной плагина Wordpress (я думаю, что это $amount
) значение переменной javascript, чтобы подключить интерактивные курсы электронного обучения к плагину myCred WordPress, что было бы потрясающим опытом геймификации…!
Позвольте мне объяснить это немного подробнее:
Используя метод jQuery post()
, я могу отправить данные (например, числовую переменную javascript) для обработки в указанный файл PHP на сервере.давайте посмотрим на мой код, чтобы понять, что я хочу с ним сделать:
Вот мой код JavaScript:
var speechResult= 10;
$.ajax({
url:"https://...Example.php",
method: "post",
data: {'speechResult': speechResult},
success: function(res) {
console.log(res)
}
});
А вот код в моем примере.PHP .он просто показывает speechResult значение в консоли (значение, полученное из моего кода JavaScript!):
<?php
print($_POST['speechResult'])
?>
, как вы можете видеть, у меня есть переменная JavaScript с именем speechResult , и у меня есть PHP файл с именем «Example.php».
Используя приведенный выше код, я могу передать значение speechResult в Пример.php или любой другой PHP файл на сервере ( Но не PHP-файлы плагина myCred, потому что я не знаю, как использовать хуки, фильтры, действия и т. д. ).
Если я передам значение ** speechResult в переменную $amount
в myCred **, то я буду контролировать точки перемотки для пользователей на основе того, что происходит в e-leaning html5курс ...
Я хочу передать значение speechResult , чтобы присвоить значение myCred $amount
... для увеличения или уменьшения , используя общую точку баланса .