Как присвоить переменную плагина wordpress значению моей собственной переменной?
Я трачу часы, чтобы найти решение, у меня не осталось волос, чтобы вытащить их из головы, но все же...
Я знаю, что должен быть способ достичь этого, но, к сожалению, я новичок в PHP и Мне действительно нужна ваша помощь.
Есть несколько полезных вопросов по StackOverflow (ссылки ниже), это хорошее начало, но я думаю, что этого недостаточно.
https://stackoverflow.com/questions/23459826/incrementing-a-php-variable-with-click-of-wordpress-post-title
https://stackoverflow.com/questions/48481689/call-wordpress-plugin-variable-in-theme-file
BadgeOS это плагин для WordPress, который позволяет легко создавать значки и Точки и настроить шаги и достижения пользователей, чтобы заработать их.
Вот ссылки на их плагин с открытым исходным кодом:
Wordpress: https://wordpress.org/plugins/badgeos/
На GitHub: https://github.com/opencredit/badgeos
Я хочу увеличить Баллы пользователя BadgeOS значение со значением моей пользовательской переменной! Позвольте мне объяснить это немного подробнее:
Использование jQuery
post()
метод я могу отправить данные (например, числовую переменную javascript ) для обработки в указанный PHP-файл на сервере. давайте посмотрим на мой код, чтобы понять, что я хочу с ним сделать :Вот мой код JavaScript:
var speechResult= 10; $.ajax({ url:"https://...Example.php", method: "post", data: {'speechResult': speechResult}, success: function(res) { console.log(res) } });
А вот и код в моем Example.php- это просто видно speechResult значение в консоли (значение, которое приходит из моего кода javascript!):
<?php print($_POST['speechResult']) ?>
как вы можете видеть у меня есть переменная JavaScript с именем speechResult, и у меня есть РНР имя файла Example.php Используя приведенный выше код, я могу передать speechResult значение для Example.php или любой другой PHP-файл на сервере (например, любые PHP-файлы Плагин BadgeOS- на бумаге, конечно :))
Я хочу увеличить Баллы пользователя BadgeOS по величине speechResult переменная, но перед этим давайте углубимся :
В файлах BadgeOS PHP есть переменные (вы можете найти все включенные файлы PHP на GitHub [здесь][1]), которые обрабатывают пользовательские точки, такие как:
$user_points
и $total_points
и $current_points
.например, у нас есть фрагмент кода из points-functions.php файл здесь:
function badgeos_get_users_points( $user_id = 0 ) { // Use current user's ID if none specified if ( ! $user_id ) $user_id = wp_get_current_user()->ID; // Return our user's points as an integer (sanely falls back to 0 if empty) return absint( get_user_meta( $user_id, '_badgeos_points', true ) ); } /** * Posts a log entry when a user earns points * * @since 1.0.0 * @param integer $user_id The given user's ID * @param integer $new_points The new points the user is being awarded * @param integer $admin_id If being awarded by an admin, the admin's user ID * @param integer $achievement_id The achievement that generated the points, if applicable * @return integer The user's updated point total */ function badgeos_update_users_points( $user_id = 0, $new_points = 0, $admin_id = 0, $achievement_id = null ) { // Use current user's ID if none specified if ( ! $user_id ) $user_id = get_current_user_id(); // Grab the user's current points $current_points = badgeos_get_users_points( $user_id ); // If we're getting an admin ID, $new_points is actually the final total, so subtract the current points if ( $admin_id ) { $new_points = $new_points - $current_points; } // Update our user's total $total_points = max( $current_points + $new_points, 0 ); update_user_meta( $user_id, '_badgeos_points', $total_points ); // Available action for triggering other processes do_action( 'badgeos_update_users_points', $user_id, $new_points, $total_points, $admin_id, $achievement_id ); // Maybe award some points-based badges foreach ( badgeos_get_points_based_achievements() as $achievement ) { badgeos_maybe_award_achievement_to_user( $achievement->ID, $user_id ); } return $total_points; } /** * Log a user's updated points * * @since 1.2.0 * @param integer $user_id The user ID * @param integer $new_points Points added to the user's total * @param integer $total_points The user's updated total points * @param integer $admin_id An admin ID (if admin-awarded) * @param integer $achievement_id The associated achievent ID */ function badgeos_log_users_points( $user_id, $new_points, $total_points, $admin_id, $achievement_id ) { // Setup our user objects $user = get_userdata( $user_id ); $admin = get_userdata( $admin_id ); // Alter our log message if this was an admin action if ( $admin_id ) $log_message = sprintf( __( '%1$s awarded %2$s %3$s points for a new total of %4$s points', 'badgeos' ), $admin->user_login, $user->user_login, number_format( $new_points ), number_format( $total_points ) ); else $log_message = sprintf( __( '%1$s earned %2$s points for a new total of %3$s points', 'badgeos' ), $user->user_login, number_format( $new_points ), number_format( $total_points ) ); // Create a log entry $log_entry_id = badgeos_post_log_entry( $achievement_id, $user_id, 'points', $log_message ); // Add relevant meta to our log entry update_post_meta( $log_entry_id, '_badgeos_awarded_points', $new_points ); update_post_meta( $log_entry_id, '_badgeos_total_user_points', $total_points ); if ( $admin_id ) update_post_meta( $log_entry_id, '_badgeos_admin_awarded', $admin_id ); } add_action( 'badgeos_update_users_points', 'badgeos_log_users_points', 10, 5 ); /** * Award new points to a user based on logged activites and earned badges * * @since 1.0.0 * @param integer $user_id The given user's ID * @param integer $achievement_id The given achievement's post ID * @return integer The user's updated points total */ function badgeos_award_user_points( $user_id = 0, $achievement_id = 0 ) { // Grab our points from the provided post $points = absint( get_post_meta( $achievement_id, '_badgeos_points', true ) ); if ( ! empty( $points ) ) return badgeos_update_users_points( $user_id, $points, false, $achievement_id ); } add_action( 'badgeos_award_achievement', 'badgeos_award_user_points', 999, 2 );
Я хочу увеличить Баллы пользователя BadgeOS по величине speechReslt переменная (я хочу увеличить переменную BadgeOS, используя свою собственную внешнюю переменную javascript).
Какие-либо предложения или идеи очень ценятся…
[1]: https://github.com/opencredit/badgeos/tree/master/includes
Что я уже пробовал:
Я использовал метод POST для назначения переменной, как описано выше, но безуспешно...