🎯 Need Help?

Get Premium Support

Priority assistance from the developer

⬆️ Upgrade

Unlock all features

More from ANWP

Sports Leagues Premium

Multi-sport league management with advanced statistics

Learn more →

AnWP SL Theme Kit

Starter themes & block patterns for Sports Leagues

Learn more →

Transfers Shortcode

Pro Feature

Display player transfer records with filtering by club, season, competition, or date range. Shows incoming and outgoing transfers with multiple layout options. Perfect for transfer news sections, club pages, or season reviews.

This page covers both halves: how to add and manage player transfers in the admin, and how to show them on your site with the [anwpfl-transfers] shortcode.

Transfers shortcode, club layout - one club split into Arrivals and Departures tables with player, other club, date of birth, transfer date and fee

Premium Feature

This shortcode requires the Football Leagues Premium plugin.

🚀 Add and manage transfers

Every move is its own transfer record – one player, one season, the club left and the club joined. The records live under Clubs & People > Transfers (the menu item has a PRO badge), not inside the player profile. The shortcode, the club page and the Layout Builder blocks all read from this one list.

Add a transfer

  1. Go to Clubs & People > Transfers and click Add New Transfer.
  2. In Player Details, start typing the player’s name in Player and pick the player from the list. The birth date in brackets and the flag help you tell two players with the same name apart.
  3. Pick the Season the transfer belongs to.
  4. In Club IN – OUT, set Club In (the club the player joins) and Club Out (the club the player leaves).
  5. In Transfer Details, fill in the date, status, window and fee – all optional.
  6. Click Publish.
Add New Transfer screen - the transfer form with three panels: Player Details with a player and a season picked, Club IN - OUT with a Club In club, the Set As Current Club and Register In Squad buttons under Additional actions and a Club Out club, and Transfer Details with a transfer date, Official status, Pre-season window and a fee
Field What to enter
Player (required) The player who moves. The search matches names and shows up to 20 players.
Season (required) The season the move belongs to. The club page and the season_id attribute filter by it.
Club In The club the player joins – see the club choices below.
Club Out The club the player leaves – the same choices.
Transfer Date The day of the move. Every layout sorts by it. Leave it empty and the date cell stays blank.
Transfer Status Official (the default) or Rumour. A rumour gets a gray RUMOUR badge on the front end.
Window – not selected –, Pre-season window or Mid-season window. The club page groups transfers by it, and the shortcode’s window attribute filters by it.
Transfer End Date An optional second date, for example when a loan ends. It shows in the admin list and its filters, not on the front end.
Fee Free text, shown as you type it. The field’s own examples: $120000, Free, Loan, Ended Loan 2019-06-01. Leave it empty when the fee isn’t known – the Fee cell stays blank.

Player and Season first

If you click Publish with Player or Season empty, the transfer is saved as a Draft instead – everything you entered is kept, and a notice asks you to select a Player and a Season to publish it. Drafts don’t show on the front end.

Club In and Club Out: a club, unknown, custom text or none

The club dropdowns list every club on your site, with two extra choices at the top. Leaving a dropdown empty is a fourth choice.

The Club Out dropdown open on the transfer form - - unknown club - and - custom text - at the top of the list, followed by clubs with their logos
Choice Use it when Front end shows
A club The club exists on your site The club’s logo and name, linked to the club page
– unknown club – You know the player moved but not where from or to A question-mark club icon and “- unknown club -“
– custom text – The club isn’t on your site and you don’t want to create it. A text box appears – type the club name there The name you typed, without a logo or link
Left empty The player had no club – a free agent joining, or a player retiring A crossed club icon and “- without club -“

Does a transfer change the player’s current club?

No. Saving a transfer only records the move – the player’s Current Club and the club squad stay as they were. That’s deliberate, since you often enter old moves or rumours.

When the move should also update the player, use the two buttons under Additional actions, which appear once you pick a club in Club In:

  • Set As Current Club – makes Club In the player’s current club.
  • Register In Squad – adds the player to Club In’s Active Squad.

Both ask you to confirm and save straight away – they don’t wait for Publish. Use them with a real club, not with – unknown club – or – custom text –. The squad itself is covered on the Club Squad page.

Create a transfer from the club squad

You can also start a transfer from a club. Open the club, scroll to its Club Squad panel and click Actions on a player’s row. The panel shows the player’s current club and Transfers History. Create New Transfer opens the transfer form in a new tab with the player and Club In already filled in – and Club Out set to the player’s current club when that’s a different club. After you publish, click the reload button next to it to refresh the history.

The player Actions panel on a club's squad - the player's current club, a Change Current Club button, the Transfers History listing club out, club in, transfer date and fee for each move, and the Create New Transfer button with a reload button beside it

Find and filter transfers

Clubs & People > Transfers lists every transfer with its Player, Season, Club In, Club Out, Transfer Date, Transfer End Date, Fee and Transfer Status. Click a player name to edit that transfer. Search Transfers matches the player name.

Clubs and People, Transfers list - the filter row with Player ID, All Seasons, Club In ID, Club Out ID and the four date boxes, and rows showing player, season, club in and club out with logos, transfer date, fee and an Official or Rumour status

Set any of these above the table, then click Filter:

Filter What it does
Player ID One player’s transfers. Type the ID or click the search button to pick the player.
All Seasons Transfers of one season.
Club In ID / Club Out ID Transfers into, or out of, one club. The search button opens a club picker.
Date From / Date To A range of transfer dates.
Date End From / Date End To A range of transfer end dates – handy for loans ending soon.

Importing from API-Football? The Update Transfers action on the Import Dashboard creates these records for you – as Official, with the window worked out from the date, and with any club you haven’t imported saved as custom text. They land in the same list, so you edit them the same way.

Where transfers show up

Transfers don’t need a shortcode on club, player and competition pages – there are ready-made places for them:

Page What shows
Club page without a Layout Builder layout A Transfers section at the bottom for the season selected on the page. Transfers with no window come first, then Mid-season window and Pre-season window groups.
Club page, Layout Builder v1 The Transfers block – the same section. See block types.
Team page, Layout Builder v2 No Transfers block. Add a Shortcode block with [anwpfl-transfers club_id="%club_id%" order="DESC"] – the Team Layout Builder page shows how.
Player page, Layout Builder v1 or v2 The Transfers block – the player’s whole transfer history in the player layout, newest first. See Player Layout Builder.
Competition page, Layout Builder The Transfers block – the competition’s clubs, with a club switcher in v2. See Competition Layout Builder.
Any post or page The [anwpfl-transfers] shortcode below, or the Transfers block in the block editor.

A player page without a Layout Builder layout has no Transfers section – use a player layout, or the shortcode with player_id.

Transfers shortcode

Basic Usage

[anwpfl-transfers club_id="8" season_id="5"]

This displays all transfers for club 8 in season 5.

Don’t want to look up IDs? Open Football Leagues > Shortcodes, pick Transfers and choose the season, club, competition or player from the pickers. The builder writes the shortcode for you – see the Shortcode Builder guide.

Which ID each layout needs

Each layout needs one ID, and it prints nothing without it. season_id is never required – it narrows the list, and without it you get transfers from every season.

Layout Needs
club (the default) club_id
competition, competition-compact competition_id
player player_id
rows Nothing – with no ID it lists transfers from every club

All Parameters

Query Parameters

Parameter Default Description
club_id (empty) Club ID to show transfers for
season_id (empty) Season ID. Optional – empty means every season
competition_id (empty) Competition ID – one competition per shortcode
player_id (empty) Player ID (shows all transfers for a player)
type (all) Transfer type: in (incoming), out (outgoing). Works with the club and competition layouts, and with rows when club_id is set
window (all) Transfer window: pre (pre-season), mid (mid-season), none (not set)
limit 0 Maximum transfers to show (0 = all)

Date Filter Parameters

Parameter Default Description
date_from (empty) Start date (YYYY-MM-DD)
date_to (empty) End date (YYYY-MM-DD)
days_offset (empty) Dynamic start date. Use negative for past (e.g., -14 = 14 days ago)
days_offset_to (empty) Dynamic end date. Use 0 for today, positive for future

Display Parameters

Parameter Default Description
layout club Layout: club, competition, competition-compact, player, rows
link 0 Link player names to their profiles. Use 1 to enable
order ASC Sort order by date: asc (oldest first), desc (newest first)

Layout Comparison

The five layouts show the same moves at different densities. Pick club or player for a single entity, one of the competition layouts for a whole league, and rows for a dense feed across clubs:

club

Transfers shortcode, club layout - one club split into Arrivals and Departures tables with player, other club, date of birth, transfer date and fee

competition

Transfers shortcode, competition layout - every club in the competition gets its own heading with its arrivals and departures beneath

competition-compact

Transfers shortcode, competition-compact layout - the same competition data as one continuous table of player, club out, club in, date and fee

player

One player’s career moves, one transfer per row: club out, club in, transfer date and fee, with the RUMOUR badge under the fee for unconfirmed moves. This is the layout the player page’s Transfers block uses.

Transfers shortcode, player layout - one player's transfers newest first in four columns, Club Out and Club In with logos and names, Transfer Date and Fee, one row with a Rumour badge under the fee

rows

Transfers shortcode, rows layout - a dense date-ordered feed of moves with club abbreviations instead of full names

Examples

Example 1: Club Transfer History

When to use: Club page showing all season transfers.

[anwpfl-transfers club_id="8" season_id="5" layout="club" link="1"]

Result: All transfers for the club with player profile links.

Example 2: Incoming Transfers Only

When to use: Show new signings section.

[anwpfl-transfers club_id="8" season_id="5" type="in" order="desc"]

Result: Only incoming transfers, newest first.

Example 3: Summer Window Transfers

When to use: Show pre-season transfer activity.

[anwpfl-transfers competition_id="12" season_id="5" window="pre" layout="competition"]

Result: Pre-season transfers of every club in competition 12, grouped by club. The competition layout needs competition_id – without it the shortcode prints nothing.

Example 4: Player Transfer History

When to use: Player profile page showing career moves.

[anwpfl-transfers player_id="150" layout="player"]

Result: All transfers for the specified player.

Example 5: Recent Transfers by Date Range

When to use: Latest transfer news widget.

[anwpfl-transfers date_from="2024-01-01" date_to="2024-01-31" limit="10" order="desc" layout="rows"]

Result: The 10 latest transfers dated January 2024, across all clubs.

Example 6: Rolling 2-Week Window

When to use: Auto-updating recent transfers widget.

[anwpfl-transfers days_offset="-14" days_offset_to="0" limit="10" order="desc" layout="rows"]

Result: Transfers from the last 14 days, automatically updating daily.

Example 7: Every Transfer in a Season

When to use: A season transfer roundup across every club and competition on your site.

[anwpfl-transfers season_id="5" layout="rows" order="desc"]

Result: Every transfer saved under season 5, newest first. Add limit="50" on a busy site.

Example 8: Two Competitions on One Page

When to use: You cover two leagues and want both transfer lists together.

[anwpfl-transfers competition_id="12" season_id="5" layout="competition-compact"]
[anwpfl-transfers competition_id="14" season_id="5" layout="competition-compact"]

Result: Two lists, one per competition. One shortcode takes one competition, so place one after the other.

Tip

Use the layout parameter to match the context: club for team pages, player for individual profiles, competition for league-wide transfer roundups, and rows for a date-based feed across every club.

🆘 Troubleshooting

No transfers showing?

  • Check the transfers exist under Clubs & People > Transfers – they aren’t entered in the player profile
  • Check the layout has its ID – see Which ID each layout needs above
  • Check the season_id or date range parameters
  • Ensure the club_id matches existing clubs

My competition shortcode comes out blank unless I add a club ID

Without layout, the shortcode uses the club layout, and that one needs club_id. Set layout="competition" (or competition-compact) together with competition_id, as in Example 3.

Can one shortcode show more than one competition?

No – competition_id takes a single competition. Put two shortcodes one after the other, as in Example 8. For every competition at once, use layout="rows" with just season_id (Example 7).

Can I hide the Fee column?

There’s no setting for it. If a fee isn’t known, leave the Fee field empty and the cell stays blank.

📚 Related