Я пытаюсь создать кнопку на странице «Профиль»> «Обложка», в которой говорится просто «Удалить обложку». Тема, которую они используют, изменяет шаблон обложки, как показано здесь: http://pastebin.com/XQPpiVYsУдалить изображение кнопки Coverdypress
Я знаю, что Buddypress имеет этот параметр после того, как пользователь загрузил изображение обложки, тогда возможность его удаления доступна сразу после загрузки, но как можно добавить кнопку, позволяющую удалять обложку в любое время, а не сразу после загрузки?
Я знаю, что я не хочу редактировать ядро, но я нашел действие, ответственное за это. Есть ли способ создать кнопку, которая вызовет это действие и удалит фотографию обложки для пользователей?
в BuddyPress/п.н.-ядро/BP-ядро-attachments.php:
/**
* Ajax delete a cover image for a given object and item id.
*
* @since 2.4.0
*
* @return string|null A json object containing success data if the cover image was deleted
* error message otherwise.
*/
function bp_attachments_cover_image_ajax_delete() {
// Bail if not a POST action.
if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) {
wp_send_json_error();
}
$cover_image_data = $_POST;
if (empty($cover_image_data['object']) || empty($cover_image_data['item_id'])) {
wp_send_json_error();
}
// Check the nonce
check_admin_referer('bp_delete_cover_image', 'nonce');
// Capability check
if (! bp_attachments_current_user_can('edit_cover_image', $cover_image_data)) {
wp_send_json_error();
}
// Set object for the user's case
if ('user' === $cover_image_data['object']) {
$component = 'xprofile';
$dir = 'members';
// Set it for any other cases
} else {
$component = $cover_image_data['object'] . 's';
$dir = $component;
}
// Handle delete
if (bp_attachments_delete_file(array('item_id' => $cover_image_data['item_id'], 'object_dir' => $dir, 'type' => 'cover-image'))) {
// Defaults no cover image
$response = array(
'reset_url' => '',
'feedback_code' => 3 ,
);
// Get cover image settings in case there's a default header
$cover_params = bp_attachments_get_cover_image_settings($component);
// Check if there's a default cover
if (! empty($cover_params['default_cover'])) {
$response['reset_url'] = $cover_params['default_cover'];
}
// Finally send the reset url
wp_send_json_success($response);
} else {
wp_send_json_error(array(
'feedback_code' => 2,
));
}
}
add_action('wp_ajax_bp_cover_image_delete', 'bp_attachments_cover_image_ajax_delete');
и, наконец, я знаю, что изображения обложки обычно хранятся в члены/{ID}/крышка-изображение/папке, худший сценарий ситуации, когда они нажимают кнопку, он просто захватывает свой идентификатор пользователя и удаляет соответствующий файл или каталог?