{"id":19600,"date":"2012-08-24T16:41:36","date_gmt":"2012-08-24T16:41:36","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/liveblog\/"},"modified":"2026-04-27T17:18:50","modified_gmt":"2026-04-27T17:18:50","slug":"liveblog","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/liveblog\/","author":5279457,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.12.0","stable_tag":"1.12.0","tested":"6.9.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Liveblog","header_author":"WordPress.com VIP, Big Bite Creative and contributors","header_description":"","assets_banners_color":"","last_updated":"2026-04-27 17:18:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/wordpress.org\/extend\/plugins\/liveblog\/","header_author_uri":"https:\/\/github.com\/Automattic\/liveblog\/graphs\/contributors","rating":2.9,"author_block_rating":4.625,"active_installs":1000,"downloads":95659,"num_ratings":15,"support_threads":0,"support_threads_resolved":0,"author_block_count":6,"sections":["description","installation","changelog"],"tags":{"1.0":{"tag":"1.0","author":"batmoo","date":"2012-09-04 19:25:16"},"1.1":{"tag":"1.1","author":"batmoo","date":"2012-09-05 00:52:03"},"1.10.0":{"tag":"1.10.0","author":"automattic","date":"2026-01-06 11:22:17"},"1.11.0":{"tag":"1.11.0","author":"automattic","date":"2026-01-14 11:52:39"},"1.11.1":{"tag":"1.11.1","author":"automattic","date":"2026-04-20 12:40:17"},"1.12.0":{"tag":"1.12.0","author":"automattic","date":"2026-04-27 17:18:50"},"1.2":{"tag":"1.2","author":"nbachiyski","date":"2012-12-13 15:25:06"},"1.3":{"tag":"1.3","author":"nbachiyski","date":"2013-01-23 19:04:49"},"1.3.1":{"tag":"1.3.1","author":"philipjohn","date":"2015-03-02 17:01:27"},"1.4":{"tag":"1.4","author":"batmoo","date":"2015-03-03 22:59:24"},"1.4.1":{"tag":"1.4.1","author":"philipjohn","date":"2015-08-10 10:24:30"},"1.5":{"tag":"1.5","author":"philipjohn","date":"2016-07-31 13:36:02"},"1.5.1":{"tag":"1.5.1","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.5.2":{"tag":"1.5.2","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.5rc":{"tag":"1.5rc","author":"philipjohn","date":"2015-12-03 14:20:36"},"1.6":{"tag":"1.6","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.7":{"tag":"1.7","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.7.1":{"tag":"1.7.1","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.8.0":{"tag":"1.8.0","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.8.1":{"tag":"1.8.1","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.8.2":{"tag":"1.8.2","author":"philipjohn","date":"2018-10-17 19:36:40"},"1.9":{"tag":"1.9","author":"philipjohn","date":"2018-09-27 13:47:03"},"1.9.1":{"tag":"1.9.1","author":"philipjohn","date":"2018-10-17 19:32:31"},"1.9.2":{"tag":"1.9.2","author":"philipjohn","date":"2018-11-09 13:57:18"},"1.9.3":{"tag":"1.9.3","author":"philipjohn","date":"2018-11-09 13:57:18"},"1.9.4":{"tag":"1.9.4","author":"philipjohn","date":"2018-12-07 11:57:25"},"1.9.6":{"tag":"1.9.6","author":"automattic","date":"2021-09-29 09:48:09"}},"upgrade_notice":[],"ratings":{"1":6,"2":1,"3":1,"4":3,"5":4},"assets_icons":[],"assets_banners":[],"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3516697,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/champions-league-final-live\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"liveblog\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"permalink_structure\":\"\\\/%postname%\\\/\"}},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Flush rewrite rules *\\\/ require_once 'wordpress\\\/wp-load.php'; flush_rewrite_rules(); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Create the liveblog post *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = wp_insert_post( array( 'post_title' => 'Champions League Final: Live Updates', 'post_name' => 'champions-league-final-live', 'post_content' => 'Follow our live coverage of tonight\\\\'s Champions League Final. Our team is reporting live from the stadium with real-time updates, key moments, and expert analysis throughout the match.', 'post_status' => 'publish', 'post_author' => 1, 'post_date' => date( 'Y-m-d H:i:s' ), ) ); update_post_meta( $post_id, 'liveblog', 1 ); update_option( 'liveblog_demo_post_id', $post_id ); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Create reporter users *\\\/ require_once 'wordpress\\\/wp-load.php'; $reporter1 = wp_create_user( 'alex_reporter', 'password', 'alex@example.com' ); if ( ! is_wp_error( $reporter1 ) ) { $user = new WP_User( $reporter1 ); $user->set_role( 'editor' ); update_user_meta( $reporter1, 'first_name', 'Alex' ); update_user_meta( $reporter1, 'last_name', 'Martinez' ); wp_update_user( array( 'ID' => $reporter1, 'display_name' => 'Alex Martinez' ) ); } $reporter2 = wp_create_user( 'sam_analyst', 'password', 'sam@example.com' ); if ( ! is_wp_error( $reporter2 ) ) { $user = new WP_User( $reporter2 ); $user->set_role( 'editor' ); update_user_meta( $reporter2, 'first_name', 'Sam' ); update_user_meta( $reporter2, 'last_name', 'Chen' ); wp_update_user( array( 'ID' => $reporter2, 'display_name' => 'Sam Chen' ) ); } ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Create liveblog entries - Entry 1: Match start (Key Event) *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = get_option( 'liveblog_demo_post_id' ); $reporter1 = get_user_by( 'login', 'alex_reporter' ); $entry_time = strtotime( '-45 minutes' ); $comment_id = wp_insert_comment( array( 'comment_post_ID' => $post_id, 'comment_content' => '<strong>KICK OFF!<\\\/strong> The referee blows the whistle and we are underway in the Champions League Final! The atmosphere here is absolutely electric. #UCLFinal #ChampionsLeague', 'comment_type' => 'liveblog', 'user_id' => $reporter1->ID, 'comment_author' => $reporter1->display_name, 'comment_author_email' => $reporter1->user_email, 'comment_approved' => 'liveblog', 'comment_date' => date( 'Y-m-d H:i:s', $entry_time ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $entry_time ), ) ); update_comment_meta( $comment_id, 'is_liveblog_key_entry', 1 ); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Entry 2: Early action *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = get_option( 'liveblog_demo_post_id' ); $reporter2 = get_user_by( 'login', 'sam_analyst' ); $entry_time = strtotime( '-38 minutes' ); wp_insert_comment( array( 'comment_post_ID' => $post_id, 'comment_content' => 'Early pressure from the home side. They\\\\'re pressing high and forcing turnovers in dangerous areas. The away team struggling to get out of their own half in these opening minutes.', 'comment_type' => 'liveblog', 'user_id' => $reporter2->ID, 'comment_author' => $reporter2->display_name, 'comment_author_email' => $reporter2->user_email, 'comment_approved' => 'liveblog', 'comment_date' => date( 'Y-m-d H:i:s', $entry_time ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $entry_time ), ) ); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Entry 3: First goal (Key Event) *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = get_option( 'liveblog_demo_post_id' ); $reporter1 = get_user_by( 'login', 'alex_reporter' ); $entry_time = strtotime( '-30 minutes' ); $comment_id = wp_insert_comment( array( 'comment_post_ID' => $post_id, 'comment_content' => '<strong>GOAL! 1-0!<\\\/strong> What a strike! A thunderous shot from outside the box flies into the top corner. The goalkeeper had no chance! The stadium erupts! #UCLFinal #Goal', 'comment_type' => 'liveblog', 'user_id' => $reporter1->ID, 'comment_author' => $reporter1->display_name, 'comment_author_email' => $reporter1->user_email, 'comment_approved' => 'liveblog', 'comment_date' => date( 'Y-m-d H:i:s', $entry_time ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $entry_time ), ) ); update_comment_meta( $comment_id, 'is_liveblog_key_entry', 1 ); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Entry 4: Analysis *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = get_option( 'liveblog_demo_post_id' ); $reporter2 = get_user_by( 'login', 'sam_analyst' ); $entry_time = strtotime( '-25 minutes' ); wp_insert_comment( array( 'comment_post_ID' => $post_id, 'comment_content' => '<em>Tactical insight:<\\\/em> The away team is now forced to push forward, which could leave them vulnerable on the counter. Watch for those quick transitions - that\\\\'s where the danger will come from.', 'comment_type' => 'liveblog', 'user_id' => $reporter2->ID, 'comment_author' => $reporter2->display_name, 'comment_author_email' => $reporter2->user_email, 'comment_approved' => 'liveblog', 'comment_date' => date( 'Y-m-d H:i:s', $entry_time ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $entry_time ), ) ); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Entry 5: Yellow card *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = get_option( 'liveblog_demo_post_id' ); $reporter1 = get_user_by( 'login', 'alex_reporter' ); $entry_time = strtotime( '-18 minutes' ); wp_insert_comment( array( 'comment_post_ID' => $post_id, 'comment_content' => 'Yellow card shown for a reckless challenge in midfield. Tempers are flaring now - this final is living up to the hype! The referee is going to have his hands full tonight. #UCLFinal', 'comment_type' => 'liveblog', 'user_id' => $reporter1->ID, 'comment_author' => $reporter1->display_name, 'comment_author_email' => $reporter1->user_email, 'comment_approved' => 'liveblog', 'comment_date' => date( 'Y-m-d H:i:s', $entry_time ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $entry_time ), ) ); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Entry 6: Half time (Key Event) *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = get_option( 'liveblog_demo_post_id' ); $reporter1 = get_user_by( 'login', 'alex_reporter' ); $entry_time = strtotime( '-10 minutes' ); $comment_id = wp_insert_comment( array( 'comment_post_ID' => $post_id, 'comment_content' => '<strong>HALF TIME: 1-0<\\\/strong> An enthralling first half comes to an end. One goal separates the teams, but it could easily have been more. Stay with us for the second half - this one is far from over! #UCLFinal #HalfTime', 'comment_type' => 'liveblog', 'user_id' => $reporter1->ID, 'comment_author' => $reporter1->display_name, 'comment_author_email' => $reporter1->user_email, 'comment_approved' => 'liveblog', 'comment_date' => date( 'Y-m-d H:i:s', $entry_time ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $entry_time ), ) ); update_comment_meta( $comment_id, 'is_liveblog_key_entry', 1 ); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php \\\/* Entry 7: Latest update *\\\/ require_once 'wordpress\\\/wp-load.php'; $post_id = get_option( 'liveblog_demo_post_id' ); $reporter2 = get_user_by( 'login', 'sam_analyst' ); $entry_time = strtotime( '-2 minutes' ); wp_insert_comment( array( 'comment_post_ID' => $post_id, 'comment_content' => 'The players are back on the pitch and ready for the second half. We\\\\'re hearing there might be a tactical change - keep refreshing for the latest updates as they happen!', 'comment_type' => 'liveblog', 'user_id' => $reporter2->ID, 'comment_author' => $reporter2->display_name, 'comment_author_email' => $reporter2->user_email, 'comment_approved' => 'liveblog', 'comment_date' => date( 'Y-m-d H:i:s', $entry_time ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $entry_time ), ) ); delete_option( 'liveblog_demo_post_id' ); ?>\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":["1.0","1.1","1.10.0","1.11.0","1.11.1","1.12.0","1.2","1.3","1.3.1","1.4","1.4.1","1.5","1.5.1","1.5.2","1.5rc","1.6","1.7","1.7.1","1.8.0","1.8.1","1.8.2","1.9","1.9.1","1.9.2","1.9.3","1.9.4","1.9.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":2606612,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":2606612,"resolution":"2","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":2606612,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":2606612,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":2606612,"resolution":"6","location":"assets","locale":""},"screenshot-8.png":{"filename":"screenshot-8.png","revision":2606612,"resolution":"8","location":"assets","locale":""}},"screenshots":{"1":"The entry form is the simplest possible.","2":"Writers can preview before posting.","3":"New posts are highlighted.","4":"Adding images is a matter of just drag and drop.","5":"Dragged photos are automatically inserted.","6":"Typical liveblog view."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[577,575,1248,866,4776],"plugin_category":[37],"plugin_contributors":[77494,77504,78161,77545,79856,78261],"plugin_business_model":[],"class_list":["post-19600","plugin","type-plugin","status-publish","hentry","plugin_tags-live-blog","plugin_tags-liveblog","plugin_tags-news","plugin_tags-real-time","plugin_tags-sports","plugin_category-arts-and-entertainment","plugin_contributors-automattic","plugin_contributors-batmoo","plugin_contributors-garyj","plugin_contributors-johnjamesjacoby","plugin_contributors-nbachiyski","plugin_contributors-philipjohn","plugin_committers-automattic","plugin_committers-batmoo","plugin_committers-nbachiyski","plugin_support_reps-dartiss"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/liveblog.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/liveblog\/assets\/screenshot-1.png?rev=2606612","caption":"The entry form is the simplest possible."},{"src":"https:\/\/ps.w.org\/liveblog\/assets\/screenshot-2.png?rev=2606612","caption":"Writers can preview before posting."},{"src":"https:\/\/ps.w.org\/liveblog\/assets\/screenshot-4.png?rev=2606612","caption":"Adding images is a matter of just drag and drop."},{"src":"https:\/\/ps.w.org\/liveblog\/assets\/screenshot-5.png?rev=2606612","caption":"Dragged photos are automatically inserted."},{"src":"https:\/\/ps.w.org\/liveblog\/assets\/screenshot-6.png?rev=2606612","caption":"Typical liveblog view."},{"src":"https:\/\/ps.w.org\/liveblog\/assets\/screenshot-8.png?rev=2606612","caption":""}],"raw_content":"<!--section=description-->\n<p>Your readers want your updates as quickly as possible, and we think we provide the easiest and most flexible publishing environment to make that happen. Sometimes though, that's just not enough.<\/p>\n\n<p>When you're covering a fast-paced event \u2014 the latest Apple unveiling, an F1 Grand Prix or the Super Bowl \u2014 a full blog post for each individual update is a poor experience for your authors and your audience.<\/p>\n\n<p>The <a href=\"https:\/\/wpvip.com\/\">WordPress.com VIP Liveblog Add-On<\/a> was purpose-built to address these issues.<\/p>\n\n<p>Here's what makes it special:<\/p>\n\n<ul>\n<li>Post updates right from the front end of your site (no need to use the <code>\/wp-admin<\/code> dashboard).<\/li>\n<li>Viewers of your liveblog get new entries served to them instantly and automatically, without needing to refresh.<\/li>\n<li>Authors can drag and drop photos straight into the liveblog area, without separate browser tabs or windows.<\/li>\n<li>No need for a separate site dedicated to liveblogging \u2014 every post can be a liveblog, even existing ones.<\/li>\n<\/ul>\n\n<p>If you'd like to check out the code and contribute, <a href=\"https:\/\/github.com\/Automattic\/liveblog\">join us on GitHub<\/a> \u2014 pull requests are more than welcome.<\/p>\n\n<h3>Documentation<\/h3>\n\n<p>Developer and end-user documentation lives in the <a href=\"https:\/\/github.com\/Automattic\/liveblog\/tree\/develop\/docs\"><code>docs\/<\/code><\/a> directory:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/docs\/end-user-guide.md\">End user guide<\/a> \u2014 for editors and site administrators.<\/li>\n<li><a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/docs\/customization.md\">Customization<\/a> \u2014 entry features, key events, hashtags, commands, emoji, shortcodes, template overrides.<\/li>\n<li><a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/docs\/admin-meta-box.md\">Extending the admin meta box<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/docs\/entry-hooks.md\">Hooking into entries<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/docs\/auto-archive.md\">Auto-archiving<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/docs\/websockets.md\">WebSocket support<\/a><\/li>\n<\/ul>\n\n<h3>Contributing<\/h3>\n\n<p>See <a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/CONTRIBUTING.md\">CONTRIBUTING.md<\/a> for how to set up the development environment and submit changes.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>liveblog<\/code> folder to your plugins directory (e.g. <code>\/wp-content\/plugins\/<\/code>).<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Enable the liveblog on any post's edit page.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<p>See the <a href=\"https:\/\/github.com\/Automattic\/liveblog\/blob\/develop\/CHANGELOG.md\">full changelog on GitHub<\/a>.<\/p>","raw_excerpt":"Empowers website owners to provide rich and engaging live event coverage to a large, distributed audience.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/19600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=19600"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/automattic"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=19600"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=19600"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=19600"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=19600"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=19600"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=19600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}