{"id":361222,"date":"2026-09-06T20:21:48","date_gmt":"2026-09-06T20:21:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/blogroll-podroll-block\/"},"modified":"2026-09-07T06:21:02","modified_gmt":"2026-09-07T06:21:02","slug":"blockroll","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/blockroll\/","author":130940,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Blogroll & Podroll Block","header_author":"Matthias Pfefferle","header_description":"Share the blogs and podcasts you follow, and let other people subscribe to your list.","assets_banners_color":"","last_updated":"2026-09-07 06:21:02","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/notiz.blog\/donate\/","header_plugin_uri":"https:\/\/github.com\/pfefferle\/wordpress-blockroll","header_author_uri":"https:\/\/notiz.blog\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":93,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"pfefferle","date":"2026-09-07 06:21:02","revision":3684260}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3684260,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/blogroll\\\/\",\"steps\":[{\"step\":\"setSiteOptions\",\"options\":{\"permalink_structure\":\"\\\/%postname%\\\/\"}},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"blockroll\"}},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once 'wordpress\\\/wp-load.php';\\n$links = array(\\n\\tarray( 'url' => 'https:\\\/\\\/notiz.blog\\\/', 'name' => 'Matthias Pfefferle', 'description' => 'Webworker, Open Web Lead at Automattic', 'feedUrl' => 'https:\\\/\\\/notiz.blog\\\/feed\\\/', 'photo' => '', 'xfn' => array( 'me' ), 'added' => '2026-01-04' ),\\n\\tarray( 'url' => 'https:\\\/\\\/alex.kirk.at\\\/', 'name' => 'Alex Kirk', 'description' => 'Building the Friends plugin', 'feedUrl' => 'https:\\\/\\\/alex.kirk.at\\\/feed\\\/', 'photo' => '', 'xfn' => array( 'co-worker' ), 'added' => '2026-01-11' ),\\n\\tarray( 'url' => 'https:\\\/\\\/adactio.com\\\/', 'name' => 'Jeremy Keith', 'description' => 'Journal of a web developer in Brighton', 'feedUrl' => 'https:\\\/\\\/adactio.com\\\/journal\\\/rss', 'photo' => '', 'xfn' => array(), 'added' => '2026-02-02' ),\\n\\tarray( 'url' => 'https:\\\/\\\/tantek.com\\\/', 'name' => 'Tantek Celik', 'description' => 'Inventor, writer, teacher, runner', 'feedUrl' => 'https:\\\/\\\/tantek.com\\\/updates.atom', 'photo' => '', 'xfn' => array(), 'added' => '2026-02-17' ),\\n\\tarray( 'url' => 'https:\\\/\\\/ma.tt\\\/', 'name' => 'Matt Mullenweg', 'description' => 'Unlucky in cards', 'feedUrl' => 'https:\\\/\\\/ma.tt\\\/feed\\\/', 'photo' => '', 'xfn' => array(), 'added' => '2026-03-08' ),\\n\\tarray( 'url' => 'https:\\\/\\\/www.manton.org\\\/', 'name' => 'Manton Reece', 'description' => 'Micro.blog, indie microblogging', 'feedUrl' => 'https:\\\/\\\/www.manton.org\\\/feed.xml', 'photo' => '', 'xfn' => array(), 'added' => '2026-03-25' ),\\n);\\n$attributes = array(\\n\\t'links'       => $links,\\n\\t'sortBy'      => 'name',\\n\\t'perPage'     => 0,\\n\\t'showAvatars' => true,\\n\\t'showSort'    => true,\\n\\t'showOpml'    => true,\\n);\\n$content = '<!-- wp:blockroll\\\/blogroll ' . wp_json_encode( $attributes ) . ' \\\/-->';\\nwp_insert_post(\\n\\tarray(\\n\\t\\t'post_title'   => 'Blogroll',\\n\\t\\t'post_name'    => 'blogroll',\\n\\t\\t'post_type'    => 'page',\\n\\t\\t'post_status'  => 'publish',\\n\\t\\t'post_content' => $content,\\n\\t)\\n);\\n\"},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"Blogroll Demo\",\"blogdescription\":\"The blogs and podcasts I follow\"}}]}"}},"all_blocks":{"blockroll\/blogroll":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"blockroll\/blogroll","title":"Blogroll","category":"widgets","icon":"admin-links","description":"Share a list of the blogs and sites you follow.","textdomain":"blockroll","keywords":["blogroll","links","opml","xfn"],"supports":{"html":false,"align":true},"attributes":{"links":{"type":"array","default":[]},"sortBy":{"type":"string","default":"name","enum":["name","added","manual"]},"perPage":{"type":"number","default":0},"showAvatars":{"type":"boolean","default":true},"showSort":{"type":"boolean","default":true},"showOpml":{"type":"boolean","default":true}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","render":"file:.\/render.php"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3684260,"resolution":"1","location":"assets","locale":"","width":2862,"height":2052},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3684260,"resolution":"2","location":"assets","locale":"","width":2862,"height":2052}},"screenshots":{"1":"A blogroll on a page, with the sorting and a link to each feed.","2":"The same list as an OPML file, which is what a feed reader gets when someone subscribes."}},"plugin_section":[],"plugin_tags":[2657,1594,175,13176,279461],"plugin_category":[],"plugin_contributors":[77968],"plugin_business_model":[],"class_list":["post-361222","plugin","type-plugin","status-publish","hentry","plugin_tags-blogroll","plugin_tags-feeds","plugin_tags-links","plugin_tags-opml","plugin_tags-podroll","plugin_contributors-pfefferle","plugin_committers-pfefferle"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/blockroll.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/blockroll\/assets\/screenshot-1.png?rev=3684260","caption":"A blogroll on a page, with the sorting and a link to each feed."},{"src":"https:\/\/ps.w.org\/blockroll\/assets\/screenshot-2.png?rev=3684260","caption":"The same list as an OPML file, which is what a feed reader gets when someone subscribes."}],"raw_content":"<!--section=description-->\n<p>A blogroll is a list of the sites you read, put on your own site so other people can\nfind them. This plugin adds one block for that. You collect the links, the block renders\nthem on your page, and visitors can take the whole list with them into their feed reader.<\/p>\n\n<p>It works for anything you want to recommend: blogs, podcasts, the people you know, the\nsites of your local club.<\/p>\n\n<p><strong>Adding a link is one field.<\/strong> Paste the address and the plugin looks up the site's\nname, description, icon and feed for you. You can correct all of it afterwards, and you\ncan fill in everything by hand if you prefer.<\/p>\n\n<p><strong>Nothing to configure.<\/strong> There is no settings page and no extra database table. The\nlist is part of the page it sits on, so it is backed up, revisioned and exported\ntogether with that page.<\/p>\n\n<p><strong>Other people can subscribe.<\/strong> Your list is published as an OPML file, the format feed\nreaders use for subscription lists. Someone can hand that address to their reader and\nfollow everything you recommend, and readers can find it on your site by themselves. If\nyou change your list, their copy stays up to date.<\/p>\n\n<p><strong>Bring your list along.<\/strong> Import the OPML export from your feed reader and the block is\nfilled in one go, instead of pasting a hundred links by hand.<\/p>\n\n<p><strong>Say how you know someone.<\/strong> You can mark an entry as a friend, a colleague, or someone\nyou have met. It shows up as a small note under the entry, and it is readable for tools\nthat map who knows whom.<\/p>\n\n<p><strong>Sorting and paging for visitors.<\/strong> Long lists get pages, and visitors can sort by name\nor by what you added last. There is no JavaScript in the list at all, every click is a\nnormal page load, and you can switch the sorting off per block.<\/p>\n\n<!--section=installation-->\n<p>Follow the normal instructions for <a href=\"https:\/\/wordpress.org\/documentation\/article\/manage-plugins\/\">installing WordPress plugins<\/a>.<\/p>\n\n<h3>Automatic Plugin Installation<\/h3>\n\n<p>To add a WordPress Plugin using the <a href=\"https:\/\/wordpress.org\/documentation\/article\/manage-plugins\/#installing-plugins\">built-in plugin installer<\/a>:<\/p>\n\n<ol>\n<li>Go to Plugins &gt; Add New.<\/li>\n<li>Type \"<code>blogroll<\/code>\" into the <strong>Search Plugins<\/strong> box.<\/li>\n<li>Find the WordPress Plugin you wish to install.\n\n<ol>\n<li>Click <strong>Details<\/strong> for more information about the Plugin and instructions you may wish to print or save to help setup the Plugin.<\/li>\n<li>Click <strong>Install Now<\/strong> to install the WordPress Plugin.<\/li>\n<\/ol><\/li>\n<li>The resulting installation screen will list the installation as successful or note any problems during the install.<\/li>\n<li>If successful, click <strong>Activate Plugin<\/strong> to activate it, or <strong>Return to Plugin Installer<\/strong> for further actions.<\/li>\n<\/ol>\n\n<h3>Manual Plugin Installation<\/h3>\n\n<p>There are a few cases when manually installing a WordPress Plugin is appropriate.<\/p>\n\n<ul>\n<li>If you wish to control the placement and the process of installing a WordPress Plugin.<\/li>\n<li>If your server does not permit automatic installation of a WordPress Plugin.<\/li>\n<li>If you want to try the <a href=\"https:\/\/github.com\/pfefferle\/wordpress-blockroll\">latest development version<\/a>.<\/li>\n<\/ul>\n\n<p>Installation of a WordPress Plugin manually requires FTP familiarity and the awareness that you may put your site at risk if you install a WordPress Plugin incompatible with the current version or from an unreliable source.<\/p>\n\n<p>Backup your site completely before proceeding.<\/p>\n\n<p>To install a WordPress Plugin manually:<\/p>\n\n<ul>\n<li>Download your WordPress Plugin to your desktop.\n\n<ul>\n<li>Download from <a href=\"https:\/\/wordpress.org\/plugins\/blockroll\/\">the WordPress directory<\/a><\/li>\n<li>Download from <a href=\"https:\/\/github.com\/pfefferle\/wordpress-blockroll\/releases\">GitHub<\/a><\/li>\n<\/ul><\/li>\n<li>If downloaded as a zip archive, extract the Plugin folder to your desktop.<\/li>\n<li>With your FTP program, upload the Plugin folder to the <code>wp-content\/plugins<\/code> folder in your WordPress directory online.<\/li>\n<li>Go to the Plugins screen and find the newly uploaded Plugin in the list.<\/li>\n<li>Click <strong>Activate<\/strong> to activate it.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20find%20the%20block%3F\"><h3>Where do I find the block?<\/h3><\/dt>\n<dd><p>In the editor, add a block and search for \"Blogroll\". Put it on any page or post. You\ncan have several, on one page or spread over many.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20link%3F\"><h3>How do I add a link?<\/h3><\/dt>\n<dd><p>Paste the address of the site and the plugin fills in the rest: name, description, icon,\nand the feed, if it finds one. Everything stays editable, and links can be reordered by\ndragging.<\/p><\/dd>\n<dt id=\"can%20i%20import%20the%20subscriptions%20from%20my%20feed%20reader%3F\"><h3>Can I import the subscriptions from my feed reader?<\/h3><\/dt>\n<dd><p>Yes. Every feed reader can export your subscriptions as an OPML file. Upload that file\nin the block, paste its content, or give the plugin the address of an OPML file that is\nalready online.<\/p>\n\n<p>Looking up extra details for each imported link is optional, so importing a list of two\nhundred feeds does not fetch two hundred sites unless you ask for it.<\/p><\/dd>\n<dt id=\"how%20do%20other%20people%20subscribe%20to%20my%20blogroll%3F\"><h3>How do other people subscribe to my blogroll?<\/h3><\/dt>\n<dd><p>Add <code>?opml<\/code> to the address of the page your blogroll is on, for\nexample <code>https:\/\/example.com\/links\/?opml<\/code>. That is the address to hand to a feed reader.<\/p>\n\n<p>You do not have to tell anyone about it. Pages with a blogroll announce it in their\nHTML, and so does your homepage, so a reader that looks for it will find it. Sites that\ncollect blogrolls look at <code>https:\/\/example.com\/.well-known\/recommendations.opml<\/code>, which\nlists all blogrolls on your site.<\/p>\n\n<p>There is also a download link under the list, for people who prefer a file.<\/p><\/dd>\n<dt id=\"does%20it%20work%20for%20podcasts%3F\"><h3>Does it work for podcasts?<\/h3><\/dt>\n<dd><p>Yes. A podroll is a blogroll of podcasts, and both are the same kind of list. Podcast\napps read the same OPML files.<\/p><\/dd>\n<dt id=\"where%20are%20the%20settings%3F\"><h3>Where are the settings?<\/h3><\/dt>\n<dd><p>There are none. Everything belongs to the block: which links, in which order, how many\nper page, whether icons and sorting are shown.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20anywhere%3F\"><h3>Does the plugin send data anywhere?<\/h3><\/dt>\n<dd><p>Only where you point it. When you paste a link, your site fetches that address to read\nthe site's name, feed and icon, and when you import a list from an address, your site\nfetches that file. Nothing else leaves your server, and there is no tracking, no\nanalytics and no account anywhere.<\/p><\/dd>\n<dt id=\"does%20this%20need%20javascript%3F\"><h3>Does this need JavaScript?<\/h3><\/dt>\n<dd><p>Not for your visitors. The list, the sorting and the paging are plain HTML rendered on\nyour server. The editor uses JavaScript, like the rest of the block editor does.<\/p><\/dd>\n<dt id=\"where%20is%20the%20developer%20documentation%3F\"><h3>Where is the developer documentation?<\/h3><\/dt>\n<dd><p>The markup of the list, the OPML endpoints, the discovery links and the two REST\nroutes are described in the\n<a href=\"https:\/\/github.com\/pfefferle\/wordpress-blockroll\/blob\/main\/docs\/developers.md\">developer docs<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p>Project and support maintained on github at <a href=\"https:\/\/github.com\/pfefferle\/wordpress-blockroll\">pfefferle\/wordpress-blockroll<\/a>.<\/p>\n\n<h3>1.0.0<\/h3>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Share the blogs and podcasts you follow, and let other people subscribe to your list.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/361222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=361222"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pfefferle"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=361222"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=361222"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=361222"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=361222"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=361222"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=361222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}