Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/victorcartesius/wp-vincula/archive/refs/heads/main.zipVincula
Blogroll friend links for WordPress: curate entries in the admin and render them anywhere with a single shortcode.
- Plugin slug:
vincula - Version: 1.0.0
- Author: Victor Cartesius
- Text domain:
vincula - License: MIT
Features
- Dedicated link management — registers a custom post type (
vinculum) with its own admin menu, keeping friend links separate from posts and pages. - Shortcode rendering — drop
[vincula]into any shortcode-aware area to output a card grid. - Custom logos — paste an image URL or pick one straight from the WordPress media library (
wp.media). - Automatic fallback — links without a logo fall back to the target site's favicon.
- Priority ordering — assign each link a numeric weight; lower numbers appear first.
- At-a-glance admin list — extra
Priority,URL, andLogocolumns on the link list screen. - CSV import / export — move the whole list in and out of the site from a single screen.
- Quick edit — change URL, logo, priority and description straight from the list screen, without opening the editor.
- Responsive by default — two columns on desktop, single column below 600px.
- No dependencies, no configuration — activate and go; styles ship with the shortcode output.
Requirements
| Item | Requirement |
|---|---|
| WordPress | 5.0 or later |
| PHP | 7.0 or later |
| Browser | Any modern browser with CSS Flexbox and -webkit-line-clamp support |
The media library uploader depends on wp.media and is only enqueued on vinculum edit screens.
Installation
From the admin dashboard
- Compress the
vinculafolder into a.ziparchive. - In your site admin, go to Plugins → Add New → Upload Plugin, choose the archive, and install it.
- Click Activate Plugin.
Manually via FTP / file manager
- Upload the entire
vinculafolder towp-content/plugins/. - Go to Plugins in the admin and activate Vincula.
The plugin flushes rewrite rules on both activation and deactivation.
Usage
1. Add a friend link
Once activated, a Vincula menu appears in the admin sidebar (position 80, dashicons-networking icon). The list screen itself is titled Friend Links.
Click Add New Friend Link and fill in:
| Location | Field | Required | Description |
|---|---|---|---|
| Title field | Title | Yes | Site name shown on the card |
| Editor | Content | No | Short description; truncated to two lines on the front end |
Meta box URL |
URL | Yes | Full address including https://; links without it are skipped |
Meta box Logo |
Logo URL | No | Paste a URL or click Upload Image to pick from the media library; falls back to the favicon when empty |
Sidebar Priority |
Priority | No | Integer, defaults to 0; lower numbers appear first |
Once saved, the list screen shows the extra Priority, URL, and Logo columns for quick review.
2. Display them on the front end
Insert the shortcode into a page, post, or shortcode block:
[vincula]
Supported locations:
- Page or post content (block editor or classic editor)
- Shortcode block in the block editor
- Text widget in the classic widgets screen
- Shortcode modules in third-party page builders
A common setup is to create a "Friends" page containing only [vincula] and add it to your navigation menu.
The shortcode currently accepts no attributes —
[vincula]is the only supported form. The legacy[friend_cards]alias is still registered so that pages created before the rename keep working.
3. Bulk import and export (CSV)
Go to Vincula → Import / Export.
Export downloads a UTF-8 CSV (with a BOM, so Excel detects the encoding) containing every entry, ordered by priority. Columns:
| Column | Notes |
|---|---|
name |
Site name. |
description |
Plain text of the editor content. |
url |
Full address including https://. |
logo |
Logo URL; empty means the favicon is used. |
priority |
Integer; lower numbers appear first. |
status |
publish, draft, pending, private or future. |
Import accepts the same format. The header row is required but the column order is free — title, link, logo_url, order, post_status and similar aliases are recognised.
- Rows are matched against existing entries by
url. - Leave Update entries whose URL already exists unchecked to only add new rows; check it to overwrite name, description, logo, priority and status of matching entries.
- Rows without a URL are skipped and counted in the report.
After importing, the screen reports how many rows were imported, updated and skipped.
Sample file
A ready-to-edit example ships with the plugin: samples/friend-links-sample.csv. The same file is linked from the Import / Export screen, so you can download it before writing your own.
name,description,url,logo,priority,status
WordPress.org,Official plugin and theme directory,https://wordpress.org,,10,publish
CSS-Tricks,"Articles, demos and screencasts about front-end development",https://css-tricks.com,,20,publish
Smashing Magazine,Design and UX resources,https://www.smashingmagazine.com,https://www.smashingmagazine.com/images/favicon/favicon.png,30,publish
,Name is taken from the URL host when left empty,https://example.org,,40,publish
Example Draft,Hidden from the grid until published,https://example.net,,50,draft
What each row demonstrates:
| Row | Shows |
|---|---|
WordPress.org |
All six columns filled in. |
CSS-Tricks |
A description containing a comma, wrapped in double quotes. |
Smashing Magazine |
A custom logo URL instead of the favicon. |
| (empty name) | A blank name falls back to the URL host. |
Example Draft |
status set to draft, so the entry stays off the front end. |
Two adjacent commas (...,,10,...) mean the column is empty — that is how the logo is left blank above. A field that contains a comma, a double quote or a line break must be wrapped in double quotes, with inner quotes doubled ("").
4. Quick edit
Hover a row on the Friend Links list screen and click Quick Edit. The inline form exposes URL, Logo, Priority and Description next to the usual title and slug fields. Save with Update.
Quick edit relies on the standard save_post flow, which also runs the same capability check as the full editor. The list columns refresh on the next page load.
Markup and styling
The shortcode outputs the following structure, so you can override styles with your own selectors:
<div class="vincula-grid">
<div class="vincula-item">
<a class="vincula-link" href="..." target="_blank" rel="noopener">
<img class="vincula-icon" src="..." alt="Site name" loading="lazy">
<span class="vincula-name">Site name</span>
<span class="vincula-desc">Site description</span>
</a>
</div>
<!-- ... -->
</div>
| Class | Purpose |
|---|---|
.vincula-grid |
Cards container; flex layout with a 20px gap |
.vincula-item |
Individual card; 50% width by default |
.vincula-link |
Inner link; stacks content vertically and centers it |
.vincula-icon |
Circular 72 × 72 logo |
.vincula-name |
Bold site name |
.vincula-desc |
Site description, clamped to two lines |
Styles are printed as an inline `
Releases
2 releases.
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.