The following [action hooks](https://developer.wordpress.org/reference/functions/do_action/) can be used to customize templates without the need to duplicate the template files, greatly reducing the risk of them becoming outdated due to updates in the future. Actions can be easily added or overwritten in child themes or plugins. See `includes/functions/hooks/`.
### Example: Add Discord invite link to chapter top actions
This is an example of how to add a Discord invite link to the chapter top actions via the the `fictioneer_chapter_actions_top_center` hook. The link will feature a [Font Awesome Discord icon](https://fontawesome.com/icons/discord?f=brands) and be located between the formatting modal toggle (priority: 10) and fullscreen buttons (priority: 20). Note that no arguments of the hook are used because we do not need any of them here.
Fires within `<article>` content section in the `user-profile.php` template. Normal page content is not rendered in the template, only what is hooked into this action. This is the frontend user profile, after all.
**$args:**
* $user (WP_User) – The current user object.
* $is_admin (boolean) – True if the user is an administrator.
* $is_author (boolean) – True if the user is an author (by capabilities).
* $is_moderator (boolean) – True if the user is a moderator (by capabilities).
* $is_editor (boolean) – True if the user is an editor.
Fires after the last list card in the `partials/account/_data.php` partial, added via the `'fictioneer_account_content'` action. Normally contains data nodes for comments, comment subscriptions, Follows, Reminders, Checkmarks, and bookmarks.
**Parameters:**
* $user (WP_User) – The profile user object.
**$args:**
* $is_admin (boolean) – True if the profile user is an administrator.
* $is_author (boolean) – True if the profile user is an author (by capabilities).
* $is_moderator (boolean) – True if the profile user is a moderator (by capabilities).
* $is_editor (boolean) – True if the profile user is an editor.
* $follows (array) – Collection of current follows from `fictioneer_load_follows( $user )`.
* $reminders (array) – Collection of current follows from `fictioneer_load_reminders( $user )`.
* $checkmarks (array) – Collection of current follows from `fictioneer_load_checkmarks( $user )`.
* $comments_count (int) – Total count of the profile user’s comments.
Fires after the last card in the `_settings_page_connections.php` partial. You can use this hook to add additional options to the Connections tab in the Fictioneer settings menu, belonging to the `fictioneer-settings-connections-group` group.
Fires before the last card (Deactivation) in the `_settings_page_general.php` partial. You can use this hook to add additional options to the General tab in the Fictioneer settings menu, belonging to the `fictioneer-settings-general-group` group.
Fires after the last card in the `_settings_page_phrases.php` partial. You can use this hook to add additional options to the Phrases tab in the Fictioneer settings menu, belonging to the `fictioneer-settings-phrases-group` group.
Fires after the last card in the `_settings_page_tools.php` partial. You can use this hook to add additional tools to the Tools tab in the Fictioneer settings menu. There is no default settings form group here.
Fires within the Fictioneer user profile section in the WordPress `wp-admin/profile.php` template, which is added to both the `'show_user_profile'` (Priority 20) and `'edit_user_profile'` (Priority 20) actions. The default hooked actions are restricted to administrators, moderators, and the profile user.
**Parameters:**
* $profile_user (WP_User) – The owner of the currently edited profile.
Fires between the site’s `<main>` and `<footer>` blocks. This is the empty space before the breadcrumbs, footer menu, and copyright notice. Still within the `#site` container scope. To escape that, hook into `'fictioneer_footer'` or `'wp_footer'` instead.
Fires right before the comment section outside the `<article>` but still within the `<main>` block. Note that the wrapping block does not provide padding, which means you may use the full container width. If needed, add the `padding-left` and/or `padding-right` utility CSS classes for responsive horizontal padding.
---
### `do_action( 'fictioneer_body', $args )`
Fires after `wp_body_open()` in the `<body>` right before the inline storage element (for scripts) and notifications, outside the layout. Normally includes the modals and mobile menu.
Fires *before* all caches from known plugins have been purged in the `fictioneer_purge_all_caches()` function, normally triggered by a site-wide update. You can use this hook to purge additional caches.
Fires *before* a post cache from known plugins has been purged in the `fictioneer_purge_post_cache( $post_id )` function, normally triggered by a specific post or page update. You can use this hook to purge additional caches.
Fires after the shortcode [contact form](DOCUMENTATION.md#contact-form) has been submitted, validated, and sanitized. Use this hook to apply additional validations and sanitation, perhaps with a plugin. Terminate the script if something bad is found.
**Parameter:**
* $strings (array) – Fields submitted in the form.
Fires in the second column of top action section in the `single-fcn_chapter.php` template, the first child in the chapter `<article>` container. Normally includes the formatting modal toggle, open/close fullscreen and bookmark jump buttons.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
**Parameters:**
* $location (string) – Location on the chapter page, here `'top'`.
**Hooked actions:**
*`fictioneer_chapter_formatting_button()`– Toggle to open the chapter formatting modal. Priority 10.
*`fictioneer_chapter_fullscreen_buttons()`– Buttons to open/close the fullscreen view. Priority 20.
*`fictioneer_chapter_bookmark_jump_button()`– Button to scroll to chapter bookmark (if set). Priority 30.
Fires in the first column of the top action section in the `single-fcn_chapter.php` template, the first child in the chapter `<article>` container. Normally includes the font resize buttons.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
**Parameters:**
* $location (string) – Location on the chapter page, here `'top'`.
**Hooked actions:**
*`fictioneer_chapter_resize_buttons()`– Buttons to decrease, reset, and increase the chapter font size. Priority 10.
Fires in the third column of the top action section in the `single-fcn_chapter.php` template, the first child in the chapter `<article>` container. Normally includes the chapter navigation links and bottom anchor button.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
**Parameters:**
* $location (string) – Location on the chapter page, here `'top'`.
**Hooked actions:**
*`fictioneer_chapter_nav_buttons( $args, 'top' )`– Links to the previous/next chapter, anchor to end of chapter. Priority 10.
Fires in the second column of the bottom action section in the `single-fcn_chapter.php` template, the last child in the chapter `<article>` container. Normally includes the subscribe, story link, and bookmark jump buttons.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
**Parameters:**
* $location (string) – Location on the chapter page, here `'bottom'`.
Fires in the first column of the bottom action section in the `single-fcn_chapter.php` template, the last child in the chapter `<article>` container. Normally includes the social media sharing and feed buttons.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
**Parameters:**
* $location (string) – Location on the chapter page, here `'bottom'`.
**Hooked actions:**
*`fictioneer_chapter_media_buttons()`– Buttons for social media sharing and feeds. Priority 10.
Fires in the third column of the bottom action section in the `single-fcn_chapter.php` template, the last child in the chapter `<article>` container. Normally includes the chapter navigation links and top anchor button.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
**Parameters:**
* $location (string) – Location on the chapter page, here `'bottom'`.
**Hooked actions:**
*`fictioneer_chapter_nav_buttons( $args, 'bottom' )`– Links to the previous/next chapter, anchor to start of chapter. Priority 10.
Fires right after the article header (with story, title, and authors) in the `single-fcn_chapter.php` template, inside the `<article>` container and just before the content section (or password form if the post is protected). The chapter header is unaffected by most chapter formatting options.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
Fires right after the content section in the `single-fcn_chapter.php` template, inside the `<article>` container and just before the bottom action section. Normally includes the afterword and support links.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
Fires right after the `<main>` container is closed in the `single-fcn_chapter.php` template. Normally includes the micro menu, paragraph tools, and suggestion tools. Not executed if the post is locked behind a password.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
**Hooked actions:**
*`fictioneer_chapter_micro_menu( $args )`– Add the HTML for the chapter micro menu. Priority 10.
*`fictioneer_chapter_paragraph_tools()`– Add the HTML for the chapter paragraph tools. Priority 10.
*`fictioneer_chapter_suggestion_tools()`– Add the HTML for the chapter suggestion tools. Priority 10.
Fires between the top actions sections and chapter header (title and authors) in the `single-fcn_chapter.php` template. Normally includes the foreword and chapter warnings.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
Fires just before the comments section in the `single-fcn_chapter.php` template and before the `fictioneer_before_comments` hook. The only difference is the provided argument array with chapter data.
**$args:**
* $author (WP_User) – Author of the post.
* $story_post (WP_Post|null) – Post object of the story. Unsafe.
* $story_data (array|null) – Collection of story data. Unsafe.
* $chapter_id (int) – The chapter ID.
* $chapter_title (string) – Safe chapter title.
* $chapter_password (string) – Chapter password or empty string.
* $chapter_ids (array) – IDs of visible chapters in the same story or empty array.
* $current_index (int) – Current index in the chapters_id array.
* $prev_index (int|boolean) – Index of previous chapter or false if outside bounds.
* $next_index (int|boolean) – Index of next chapter or false if outside bounds.
List page template hook. Fires right after the content section in the `chapters.php` template. Includes the paginated card list of all visible chapters on the site.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $chapters (WP_Query) – Paginated query of all published chapters.
List page template hook. Fires right at the top of an empty result list in the `'fictioneer_chapters_list'` action, before the no-result message is rendered.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $chapters (WP_Query) – Paginated query of all published chapters.
Fires right after the collection content section in the `single-fcn_collection.php` template, inside the `<article>` container and just before the footer is rendered. Normally includes the tags, content warnings, statistics, and items featured in the collection.
**$args:**
* $collection (WP_Post) – Post object of the collection.
* $collection_id (int) – Post ID of the collection.
* $title (string) – Safe title of the collection.
* $current_page (int) – Number of the current page or 1.
* $max_pages (int) – Total number of pages or 1.
* $featured_list (array) – IDs of featured items in the collection.
* $featured_query (WP_Query) – Paginated query of featured items.
**Hooked actions:**
*`fictioneer_collection_tags_and_warnings( $args )`– Tags and content warnings. Priority 10.
Fires right after the article header (title, fandom, genres, and characters) in the `single-fcn_collection.php` template, inside the `<article>` container and just before the content section (or password form if the post is protected).
**$args:**
* $collection (WP_Post) – Post object of the collection.
* $collection_id (int) – Post ID of the collection.
* $title (string) – Safe title of the collection.
* $current_page (int) – Number of the current page or 1.
* $max_pages (int) – Total number of pages or 1.
* $featured_list (array) – IDs of featured items in the collection.
* $featured_query (WP_Query) – Paginated query of featured items.
List page template hook. Fires right after the content section in the `collections.php` template. Includes the paginated card list of all visible collections on the site.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $collections (WP_Query) – Paginated query of all published collections.
List page template hook. Fires right at the top of an empty result list in the `'fictioneer_collections_list'` action, before the no-result message is rendered.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $collections (WP_Query) – Paginated query of all published collections.
Fires outside the `#site` container and before the `wp_footer` hook, near the end of the document. Not to be confused with the `fictioneer_site_footer` hook.
**$args:**
* $post_id (int|null) – Current post ID. Unsafe.
* $post_type (string|null) – Current post type. Unsafe.
* $breadcrumbs (array) – Array of breadcrumb tuples with label (0) and link (1).
**Hooked actions:**
*`fictioneer_output_modals( $args )`– Render modals based on login status and page type. Priority 10.
Fires before the content of the card grid is rendered in the `partials/_card-chapter.php` partial. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the chapter.
* $story_data (array|null) – Pre-processed data of the story. Unsafe.
* $args (array) – Optional arguments passed to the card.
Fires before the content of the card grid is rendered in the `partials/_card-collection.php` partial. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the collection.
* $items (array) – Array of featured WP_Post objects.
* $args (array) – Optional arguments passed to the card.
Fires before the content of the card grid is rendered in the `partials/_card-page.php` partial. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the page.
* $args (array) – Optional arguments passed to the card.
Fires before the content of the card grid is rendered in the `partials/_card-post.php` partial. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the post.
* $args (array) – Optional arguments passed to the card.
Fires before the content of the card grid is rendered in the `partials/_card-recommendation.php` partial. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the recommendation.
* $args (array) – Optional arguments passed to the card.
Fires before the content of the card grid is rendered in the `partials/_card-story.php` partial. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the story.
* $story_data (array) – Pre-processed data of the story.
* $args (array) – Optional arguments passed to the card.
Fires right after opening the `.mobile-menu__bottom` container in the `partials/_mobile-menu.php` partial, the last element in the mobile menu. Normally reserved for the quick buttons.
**Hooked actions:**
*`fictioneer_mobile_quick_buttons()`– Quick buttons for the mobile menu. Priority 10.
Fires right after the main mobile menu frame in the `partials/_mobile-menu.php` partial, which holds most of the panels. Primarily used to output additional frames.
*`fictioneer_mobile_user_menu()`– Mobile variant of the user menu. Priority 30.
---
### `do_action( 'fictioneer_mobile_menu_top' )`
Fires right after opening the `.mobile-menu__top` container in the `partials/_mobile-menu.php` partial. Normally reserved for the mobile version of the icon menu, called with the `'in-mobile-menu'``$location` parameter.
**Hooked actions:**
*`fictioneer_mobile_user_icon_menu()`– Mobile variant of the icon menu. Priority 10.
---
### `do_action( 'fictioneer_modals', $args )`
Fires right after the default modals have been included in the `fictioneer_output_modals` action.
**$args:**
* $post_id (int|null) – Current post ID. Unsafe.
* $story_id (int|null) – Current story ID. Unsafe.
* $header_image_url (string|boolean) – URL of the filtered header image or false.
* $header_args (array) – Arguments passed to the header.php partial.
Fires within the `#full-navigation` container in the `_navigation.php` partial, right after the navigation background and before the main navigation wrapper is rendered.
Fires before closing the `.main-navigation__wrapper` container in the `_navigation.php` partial, right after the navigation items (menu, icons, etc.) have been rendered.
**$args:**
* $post_id (int|null) – Current post ID. Unsafe.
* $story_id (int|null) – Current story ID (if chapter). Unsafe.
* $header_image_url (string|boolean) – URL of the filtered header image or false.
* $header_args (array) – Arguments passed to the header.php partial.
* $tag (string|null) – Override wrapping tag of the navigation row. Unsafe.
Fires after opening the `.main-navigation__wrapper` container in the `_navigation.php` partial, right before the navigation items (menu, icons, etc.) are rendered.
**$args:**
* $post_id (int|null) – Current post ID. Unsafe.
* $story_id (int|null) – Current story ID (if chapter). Unsafe.
* $header_image_url (string|boolean) – URL of the filtered header image or false.
* $header_args (array) – Arguments passed to the header.php partial.
* $tag (string|null) – Override wrapping tag of the navigation row. Unsafe.
Fires inside the `.post__footer-left` container within the article footer in the `single-post.php` template. Normally includes the sharing modal toggle and feed links.
**Parameters:**
* $post_id (int) – Current post ID.
**Hooked actions:**
*`fictioneer_post_media_buttons()`– Buttons for sharing and webfeeds. Priority 10.
Fires inside the `.post__footer-right` container within the article footer in the `single-post.php` template. Normally includes the subscribe button with popup menu.
Fires right after the article header (title, fandom, genres, and characters) in the `single-fcn_recommendation.php` template, inside the `<article>` container and just before the content section.
**$args:**
* $recommendation (WP_Post) – Post object of the recommendation.
* $recommendation_id (int) – Post ID of the recommendation.
* $title (string) – Safe title of the recommendation.
Fires right after the content section in the `single-fcn_recommendation.php` template, inside the `<article>` container and just before the footer is rendered. Normally includes the tags, external sources to read the recommendation, and support links for the recommendation author.
**$args:**
* $recommendation (WP_Post) – Post object of the recommendation.
* $recommendation_id (int) – Post ID of the recommendation.
* $title (string) – Safe title of the recommendation.
**Hooked actions:**
*`fictioneer_recommendation_tags( $args )`– Tags of the recommendation. Priority 10.
*`fictioneer_recommendation_links( $args )`– External links to read the recommendation. Priority 20.
*`fictioneer_recommendation_support_links( $args )`– Support links for the recommendation author. Priority 30.
List page template hook. Fires right after the content section in the `recommendations.php` template. Includes the paginated card list of all visible recommendations on the site.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $recommendations (WP_Query) – Paginated query of all published recommendations.
List page template hook. Fires right at the top of an empty result list in the `'fictioneer_recommendations_list'` action, before the no-result message is rendered.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $recommendations (WP_Query) – Paginated query of all published recommendations.
* $queried_type (string) –`fcn_recommendation`
---
### `do_action( 'fictioneer_singular_footer' )`
Fires right after opening the article’s `<footer>` container in `singular-*.php` templates.
---
### `do_action( 'fictioneer_search_footer' )`
Fires right after opening the article’s `<footer>` container in the `search.php` template.
---
### `do_action( 'fictioneer_search_form_after' )`
Fires right after the search form has been rendered.
Fires after the search form fields for type, match, sort, and order have been rendered. This allows you to render additional fields. Note that any additional fields must also be manually added to the query, see `_module-search.php` partial.
Fires before the content of the small card grid is rendered in the `partials/_latest-chapters*.php` partials. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the chapter.
* $story_data (array|null) – Pre-processed data of the story. Unsafe.
* $args (array) – Optional arguments passed to the shortcode.
Fires before the content of the small card grid is rendered in the `partials/_latest-recommendations*.php` partials. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the recommendation.
* $args (array) – Optional arguments passed to the shortcode.
Fires before the content of the small card grid is rendered in the `partials/_latest-stories*.php` partials. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the story.
* $story_data (array) – Pre-processed data of the story.
* $args (array) – Optional arguments passed to the shortcode.
Fires before the content of the small card grid is rendered in the `partials/_latest-updates*.php` partials. Does not allow you to change the content of the body, but you can add additional HTML and use CSS to modify the look. If you want to change significantly the cards, better overwrite the partial.
**Parameters:**
* $post (WP_Post) – Post object of the story.
* $story_data (array) – Pre-processed data of the story.
* $args (array) – Optional arguments passed to the shortcode.
Fires right after opening the `#site` container in the `header.php` template. Includes the navigation bar and site header with background, logo, title, etc.
Fires first inside the site’s `<footer>` container. Normally includes the breadcrumb navigation (if any), the footer menu, and the theme copyright notice.
List page template hook. Fires right after the content section in the `stories.php` template. Includes the statistics and paginated card list of all visible stories on the site.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $stories (WP_Query) – Paginated query of all published stories.
List page template hook. Fires right at the top of an empty result list in the `'fictioneer_stories_list'` action, before the no-result message is rendered.
**$args:**
* $current_page (int) – Current page number of pagination or 1.
* $post_id (int) – Current post ID.
* $stories (WP_Query) – Paginated query of all published stories.
Fires right after the `<article>` container in the `single-fcn_story.php` template, after the content and story footer has been rendered. Normally includes the story comment list.
**$args:**
* $story_data (array) – Collection of story data.
* $story_id (int) – Current story (post) ID.
**Hooked actions:**
*`fictioneer_story_comment( $args )`– AJAX-loaded list of all comments for story chapters. Priority 10.
Fires right after the content section in the `single-fcn_story.php` template, inside the `<article>` container and just before the footer is rendered. Normally includes the tags, content warnings, row with social media and action buttons, and finally a tabbed section with the chapters, related blog posts (by category), and custom pages.
Fires right after the article header in the `single-fcn_story.php` template.
Fires right after the article header (cover, title, fandom, genres, and characters) in the `single-fcn_story.php` template, inside the `<article>` container and just before the content section.