Чтобы реализовать функцию добавления записей в избранное в WordPress, вам понадобятся несколько шагов. Вот руководство, как это сделать:
### 1. Создайте таблицу для избранных записей
Первым делом вам нужно создать таблицу в базе данных для хранения избранных записей пользователей. Для этого вы можете использовать функцию `dbDelta()`, чтобы создать таблицу при активации плагина.
Пример кода, который можно добавить в файл вашего плагина:
```php
function create_favorites_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'favorites'; // Имя таблицы
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id mediumint(9) NOT NULL,
post_id mediumint(9) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'create_favorites_table');
```
### 2. Добавьте кнопку "Добавить в избранное"
Теперь вам нужна кнопка, которая позволит пользователям добавлять записи в избранное. Вы можете добавить это в шаблон вывода записи. Пример кода для кнопки:
```php
function favorites_button($post_id) {
if (is_user_logged_in()) {
echo '<button class="add-to-favorites" data-postid="' . esc_attr($post_id) . '">Добавить в избранное</button>';
}
}
add_action('the_content', 'favorites_button');
```
### 3. Обработайте AJAX-запрос для добавления в избранное
Теперь вам нужно добавить функционал, который будет обрабатывать добавление записи в избранное. Это можно сделать с помощью AJAX.
Пример кода для обработки AJAX-запроса:
```php
function add_to_favorites() {
if (!is_user_logged_in()) {
wp_send_json_error('Пожалуйста, войдите в систему.');
}
$user_id = get_current_user_id();
$post_id = intval($_POST['post_id']);
global $wpdb;
$table_name = $wpdb->prefix . 'favorites';
$wpdb->insert($table_name, array(
'user_id' => $user_id,
'post_id' => $post_id
));
wp_send_json_success('Запись добавлена в избранное.');
}
add_action('wp_ajax_add_to_favorites', 'add_to_favorites');
```
### 4. Добавьте JavaScript для обработки клика по кнопке
Теперь необходимо добавить JavaScript, который будет отправлять AJAX-запрос на сервер при нажатии на кнопку.
```html
<script type="text/javascript">
jQuery(document).ready(function($) {
$('.add-to-favorites').on('click', function() {
var postId = $(this).data('postid');
$.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
data: {
action: 'add_to_favorites',
post_id: postId
},
success: function(response) {
if (response.success) {
alert(response.data);
} else {
alert(response.data);
}
}
});
});
});
</script>
```
### 5. Отображение избранных записей
Чтобы пользователи могли видеть свои избранные записи, вы можете создать новую страницу и вывести записи из таблицы `favorites`. Используйте следующий код для выборки данных:
```php
function display_favorites() {
if (!is_user_logged_in()) {
echo 'Пожалуйста, войдите в систему.';
return;
}
$user_id = get_current_user_id();
global $wpdb;
$table_name = $wpdb->prefix . 'favorites';
$favorites = $wpdb->get_results($wpdb->prepare("SELECT post_id FROM $table_name WHERE user_id = %d", $user_id));
// Отображение избранных записей
if ($favorites) {
foreach ($favorites as $favorite) {
$post = get_post($favorite->post_id);
echo '<a href="' . get_permalink($post) . '">' . esc_html($post->post_title) . '</a><br>';
}
} else {
echo 'У вас нет избранных записей.';
}
}
```
### Заключение
Эти шаги дают вам базовую реализацию функции добавления записей в избран