По многочисленным просьбам решил обернуть решение для OpenGraph, которое я сделал вот тут в отдельный плагин для WordPress.
Плагин добавляет на страницу поста Open Graph теги, добавляет автопостинг постов в группу VK, а так же содержит инструмент для очистки кэша OG тегов в VK
Привожу тут полный говнокод код плагина, если будут вопросы и предложения пишите в телегу
Скачать можно тут
<?php /* Plugin Name: Open Graph Plugin Description: Простой плагин для добавления OG тегов и авторепостинга постов Version: 1.0 Author: kc */ function load_meta_og() { $og_meta = ''; if ( is_page() || is_single() ) { $post = get_post(get_queried_object_id()); $tags = get_tags_to_message($post->ID); if (!empty($text)) { $tags .= PHP_EOL.$text.PHP_EOL; } if (has_post_thumbnail($post->ID)) { $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); } $text = $tags . preg_replace('/[\n\r]+/s', "\n\n", strip_tags($post->post_content)); if (strlen($text) > 500) { $text = mb_substr($text, 0, 500) . '...'; } $og_meta .= '<meta property="og:title" content="' . $post->post_title. '" />' . PHP_EOL; $og_meta .= '<meta property="og:description" content="' . $text . '" />' . PHP_EOL; $og_meta .= '<meta property="og:url" content="' . get_permalink($post->ID) . '" />' . PHP_EOL; $og_meta .= '<meta property="og:type" content="URL" />' . PHP_EOL; $og_meta .= '<meta property="og:site_name" content="' . get_bloginfo('name') . '" />' . PHP_EOL; $og_meta .= '<meta property="og:locale" content="' . get_bloginfo('language') . '" />' . PHP_EOL; if (isset($image[0])) { $og_meta .= '<meta property="og:image" content="' . $image[0] . '" />' . PHP_EOL; } } echo $og_meta; } function og_plugin_add_submenu_page() { add_submenu_page( 'options-general.php', 'Настройки автопостинга', 'Open Graph Plugin', 'manage_options', 'my-plugin-settings', 'og_plugin_settings_html' ); } function og_plugin_clear_cache_link_vk($url, $token) { $api_url = 'https://api.vk.com/method/utils.resolveScreenName'; $params = [ 'screen_name' => $url, 'access_token' => $token, 'v' => '5.131' ]; $response = file_get_contents($api_url . '?' . http_build_query($params)); return json_decode($response, true); } function og_plugin_settings_html() { if (!current_user_can('manage_options')) { return; } if (isset($_POST['og_plugin_option_clear_cache_vk'])) { $response = og_plugin_clear_cache_link_vk( $_POST['og_plugin_clear_vk_link'], get_option('og_plugin_option_token_vk') ); if (isset($response['error'])) { $message = sprintf('<div class="notice notice-error"><p>При обновлении кэша VK произошла ошибка %s</p></div>', $response['error']['error_msg']); } else { $message = '<div class="notice notice-success"><p>Кэш для ссылки обновлен успешно!</p></div>'; } echo $message; } if (isset($_POST['og_plugin_option_vk'])) { update_option('og_plugin_option_token_vk', sanitize_text_field($_POST['og_plugin_option_token_vk'])); update_option('og_plugin_option_token_user_vk', sanitize_text_field($_POST['og_plugin_option_token_user_vk'])); update_option('og_plugin_option_group_vk', sanitize_text_field($_POST['og_plugin_option_group_vk'])); echo '<div class="notice notice-success"><p>Настройки сохранены!</p></div>'; } $og_plugin_option_token_vk = get_option('og_plugin_option_token_vk', get_option('og_plugin_option_token_user_vk')); $og_plugin_option_token_user_vk = get_option('og_plugin_option_token_user_vk', get_option('og_plugin_option_token_user_vk')); $og_plugin_option_group_vk = get_option('og_plugin_option_group_vk', get_option('og_plugin_option_group_vk')); ?> <div class="wrap"> <h1>Настройки автопостинга</h1> <form method="post" action=""> <input type="hidden" name="og_plugin_option_vk" value="1" /> <?php wp_nonce_field('og_plugin_settings_action', 'og_plugin_nonce'); ?> <table class="form-table"> <tr> <th scope="row"><label for="og_plugin_option_token_vk">Токен VK</label></th> <td> <input name="og_plugin_option_token_vk" type="text" id="og_plugin_option_token_vk" value="<?php echo esc_attr($og_plugin_option_token_vk); ?>" class="regular-text"> </td> </tr> <tr> <th scope="row"><label for="og_plugin_option_token_user_vk">Токен пользвателя VK</label></th> <td> <input name="og_plugin_option_token_user_vk" type="text" id="og_plugin_option_token_user_vk" value="<?php echo esc_attr($og_plugin_option_token_user_vk); ?>" class="regular-text"> </td> </tr> <tr> <th scope="row"><label for="og_plugin_option_group_vk">Группа VK</label></th> <td> <input name="og_plugin_option_group_vk" type="text" id="og_plugin_option_group_vk" value="<?php echo esc_attr($og_plugin_option_group_vk); ?>" class="regular-text"> </td> </tr> </table> <?php submit_button('Сохранить'); ?> </form> </div> <div> <h2>Очистка OG кэша в VK</h2> <form method="post" action=""> <input type="hidden" name="og_plugin_option_clear_cache_vk" value="1" /> <?php wp_nonce_field('og_plugin_settings_action', 'og_plugin_nonce'); ?> <table class="form-table"> <tr> <th scope="row"><label for="og_plugin_clear_vk_link">Ссылка</label></th> <td> <input name="og_plugin_clear_vk_link" type="text" id="og_plugin_clear_vk_link" value="" class="regular-text"> <p class="description">Ссылка, VK кэш для которой нужно очистить</p> </td> </tr> </table> <?php submit_button('Очистить'); ?> </form> </div> <?php } function send_post_vk($post_id) { $post = get_post($post_id); $text = get_tags_to_message($post->ID); if (!empty($text)) { $text = PHP_EOL.$text.PHP_EOL; } $text .= preg_replace('/[\n\r]+/s', "\n\n", strip_tags($post->post_content)); $text = strip_tags($text); if (strlen($text) > 500) { $text = mb_substr($text, 0, 500) . '...'; } $text .= PHP_EOL.get_permalink($post->ID).PHP_EOL; $data = [ 'message' => $text, 'link' => get_permalink($post->ID) ]; $url = 'https://api.vk.com/method/wall.post'; $params = [ 'owner_id' => get_option('og_plugin_option_group_vk'), 'message' => $data['message'], 'attachments' => $data['link'], 'access_token' => get_option('og_plugin_option_token_vk'), 'from_group' => 1, 'v' => '5.131' ]; curl_sender_exec($url, $params); } // Добавляет на страницу OG теги add_action( 'wp_head', 'load_meta_og' ); // Добавляет подпункт меню в настройки WP add_action('admin_menu', 'og_plugin_add_submenu_page'); // Автопост записи в группу VK при публикации записи add_action('auto-draft_to_publish', 'send_post_vk', 20, 1); add_action('future_to_publish', 'send_post_vk', 20, 1); add_action('draft_to_publish', 'send_post_vk', 20, 1);