# Filters The following [filter hooks](https://developer.wordpress.org/reference/functions/add_filter/) can be used to customize the output of action hooks and other functions without having to modify said functions. Filters can be easily added or overwritten in child themes or plugins. This list is probably incomplete. See `includes/functions/hooks/`. ### Example: Add link to subscription options This is an example of how to add a link to the subscription popup menu via the `'fictioneer_filter_subscribe_buttons'` hook. The link will feature a [Font Awesome link icon](https://fontawesome.com/icons/link?s=solid&f=classic) and be added in first place. Note how the link is pulled from the author’s meta data, which you would need to add yourself as it does not exist outside this example. ```php // Add this to your child theme's functions.php function child_theme_extend_watch_buttons( $buttons, $post_id, $author_id ) { // Get link from author meta (not a real field) $link = get_the_author_meta( 'your_custom_link', $author_id ); $link_html = ' Link'; // Prepend link in first place array_splice( $buttons, 0, 0, $link_html ); // Return filtered buttons return $buttons; } add_filter( 'fictioneer_filter_subscribe_buttons', 'child_theme_extend_watch_buttons', 10, 3 ); ``` --- ### `apply_filters( 'fictioneer_filter_admin_settings_navigation', $tabs )` Filters the intermediate output array of the tab pills inside the `fictioneer_settings_header( $tab )` function before it is imploded and rendered. The active tab is set via the `'page'` query parameter and defaults to `'general'`. **$tabs:** * $general (string) – Link to the general settings tab. * $connections (string) – Link to the connections settings tab. * $phrases (string) – Link to the phrases settings tab. * $epubs (string) – Link to the ePUBs settings tab. * $seo (string) – Link to the SEO settings tab (if enabled). * $tools (string) – Link to the tools tab. * $logs (string) – Link to the logs tab. --- ### `apply_filters( 'fictioneer_filter_ajax_get_user_data', $data, $user )` Filters the data to be returned as JSON by the `fictioneer_ajax_get_user_data()` function, which is used to set up the user’s local environment with Follows, Checkmarks, Reminders, and so forth to get around caching. Note that this function is accelerated and skips the WordPress initialization, as well as most plugins if the optional MU plugin has been installed. **$data:** * $user_id (int) – The user ID. * $timestamp (int) – Milliseconds elapsed since the epoch. * $follows (array|false) – The user’s Follows data or false if disabled. * $reminders (array|false) – The user’s Reminders data or false if disabled. * $checkmarks (array|false) – The user’s Checkmarks data or false if disabled. * $bookmarks (string) – The user’s Bookmarks JSON as string. `'{}'` if disabled. * $fingerprint (string) – The user’s unique hash. * 'isAdmin' (bool) - Whether the user is an admin. * 'isModerator' (bool) - Whether the user is a moderator. * 'isAuthor' (bool) - Whether the user is an author. * 'isEditor' (bool) - Whether the user is an editor. * 'nonce' (string) - The `'fictioneer_nonce'` nonce. * 'nonceHtml' (string) - Nonce HTMl ready to be appended to the DOM. **Parameters:** * $user (WP_User) – The user object. --- ### `apply_filters( 'fictioneer_filter_allowed_chapter_permalinks', $statuses )` Filters the array of chapter statuses that control whether the chapter permalink is rendered in the `fictioneer_prepare_chapter_groups()` function. By default, the statuses only include `['publish']`. **Note:** Used by `fictioneer_story_chapters()`. If you enable the `FICTIONEER_LIST_SCHEDULED_CHAPTERS` constant, the filter will be used to treat scheduled chapters as published. **Parameters:** * $statuses (array) – Array of chapter statuses. **Example:** ```php function child_render_scheduled_chapters_permalinks( $statuses ) { $statuses[] = 'future'; return $statuses; } add_filter( 'fictioneer_filter_allowed_chapter_permalinks', 'child_render_scheduled_chapters_permalinks' ); ``` --- ### `apply_filters( 'fictioneer_filter_allowed_orderby', $defaults )` Filters the array of allowed orderby arguments for WP_Query. **$defaults:** * $0 (string) – `modified` * $1 (string) – `date` * $2 (string) – `title` * $3 (string) – `rand` * $4 (string) – `name` * $5 (string) – `ID` * $6 (string) – `comment_count` * $7 (string) – `type` * $8 (string) – `post__in` * $9 (string) – `author` --- ### `apply_filters( 'fictioneer_filter_append_chapter_to_story_statuses', $statuses, $post_id, $story_id, $force )` Filters the array of chapter statuses that can be auto-appended to a story’s `fictioneer_story_chapters` metadata in the `fictioneer_append_chapter_to_story()` function. By default, the statuses are `['publish', 'future']`. **Parameters:** * $statuses (array) – Array of chapter statuses. * $post_id (int) – The chapter post ID. * $story_id (int) – The story post ID. * $force (boolean) – Whether to skip some guard clauses. Default false. --- ### `apply_filters( 'fictioneer_filter_shortcode_article_card_footer', $footer_items, $posts )` Filters the intermediate output array in the `_article-cards.php` partial before it is imploded and rendered. Contains statistics with icons such as the author, publishing or modified date, and comments. **$footer_items:** * $author (string|null) – Conditional. HTML for the author. * $publish_date (string) – Conditional. HTML for the publish date. * $modified_date (string) – Conditional. HTML for the modified date. * $comments (string) – HTML for the number of comments. **Parameters** * $post (WP_Post) – The post object. --- ### `apply_filters( 'fictioneer_filter_body_attributes', $attributes, $args )` Filters the intermediate output array of additional body attributes (except `class` which is handled by `body_class()`) before it is mapped, escaped, imploded, and rendered in the `header.php` template. **$attributes:** * `data-post-id` (int) – Current post ID (or -1 if null). * `data-story-id` (int|null) – Current story ID (if any). Unsafe. **$args:** * `post_id` (int|null) – Current post ID. Unsafe. * `post_type` (string|null) – Current post type. 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_image_source` (string) – Source of the header image. Either `'default'`, `'post'`, or `'story'`. * `header_args` (array) – Arguments passed to the header.php partial. **Example:** ```php function child_add_body_attributes( $attributes ) { $attributes['data-permalink'] = get_permalink(); return $attributes; } add_filter( 'fictioneer_filter_body_attributes', 'child_add_body_attributes' ); ``` --- ### `apply_filters( 'fictioneer_filter_breadcrumbs_array', $breadcrumbs, $args )` Filters the array of breadcrumb tuples inside the `fictioneer_get_breadcrumbs( $args )` function before the HTML is build. **$breadcrumbs:** * $0 (string) – Label of the breadcrumb. * $1 (string|boolean|null) – URL of the breadcrumb or falsy. **$args:** * $post_type (string|null) – Current post type. Unsafe. * $post_id (int|null) – Current post ID. Unsafe. --- ### `apply_filters( 'fictioneer_filter_bullet_separator', $separator, $context )` Filters the HTML element used as separator between taxonomies and other items. Note that some items use the `pseudo-separator` CSS class instead and are not affected by this filter, such as the meta row of shortcode lists. **Parameters:** * $separator (string) – The default separator HTML element. * $context (string) – The render context. --- ### `apply_filters( 'fictioneer_filter_card_attributes', $attributes, $post, $context )` Filters the intermediate output array of HTML attributes inside the `.card` element before they are rendered. The keys are used as attribute names. Make sure to account for already existing attributes. **Parameters:** * $attributes (array) - Associative array of attributes to be rendered. * $post (WP_Post) – The current post object. * $context (string|null) - Context regarding where or how the card is rendered. Unsafe. --- ### `apply_filters( 'fictioneer_filter_card_control_icons', $icons, $story_id, $chapter_id )` Filters the intermediate output array of the card control icons inside the `fictioneer_get_card_controls( $story_id, $chapter_id )` function before being rendered. Note that card controls will not be rendered without a story ID. **$icons:** * $sticky (string) – HTML of the sticky icon (if enabled). * $reminder (string) – HTML of the Reminder icon (if enabled). * $follow (string) – HTML of the Follow icon (if enabled). * $checkmark (string) – HTML of the checkmark icon (if enabled). **Parameters:** * $story_id (int) – ID of the story. * $chapter_id (int|null) – ID of the chapter (if chapter). --- ### `apply_filters( 'fictioneer_filter_card_control_menu', $menu, $story_id, $chapter_id )` Filters the intermediate output array of the card control popup menu inside the `fictioneer_get_card_controls( $story_id, $chapter_id )` function before being rendered. Note that card controls will not be rendered without a story ID. **$menu:** * $follow (string) – HTML of the Follow buttons (if enabled). * $reminder (string) – HTML of the Reminder buttons (if enabled). * $checkmark (string) – HTML of the checkmark buttons (if enabled). **Parameters:** * $story_id (int) – ID of the story. * $chapter_id (int|null) – ID of the chapter (if chapter). --- ### `apply_filters( 'fictioneer_filter_card_{type}_terms', $terms, $post, $args, $story_data )` Filters the intermediate output array of term HTML nodes (tags, genres, fandoms, etc.) in card partials before it is imploded and rendered, with the term IDs as keys. Type can be `post`, `story`, `chapter`, `collection`, or `recommendation`. **Parameters** * $terms (array) – Associative array of HTML nodes to be rendered. * $post (WP_Post) – The current post object. * $args (array) – Arguments passed to the shortcode. * $story_data (array|null) – Collection of story post data. Unsafe. --- ### `apply_filters( 'fictioneer_filter_chapter_card_footer', $footer_items, $post, $story, $args )` Filters the intermediate output array in the `_card-chapter.php` partial before it is imploded and rendered. Contains statistics with icons such as the number of words, publishing date, comments, and so forth. **$footer_items:** * $words (string) – HTML for the word count. * $publish_date (string) – Conditional. HTML for the publish date. * $modified_date (string) – Conditional. HTML for the modified date. * $author (string) – Conditional. HTML for the author. * $comments (string) – HTML for the number of comments. **Parameters** * $post (WP_Post) – The post object. * $story (array|null) – Optional. Chapter story data. * $args (array) – Arguments passed to the partial. --- ### `apply_filters( 'fictioneer_filter_chapter_default_formatting', $formatting )` Filters the default chapter formatting settings. The passed array is empty because the default values are also set on the frontend. You only need this filter if you want to change that. Note that the values for font-color, font-name, and site-width should not be overridden. **$formatting:** * $formatting\['font-saturation'] (int) – Start value of the font saturation. Default 0. * $formatting\['font-size'] (int) – Start value of the font size. Default 100. * $formatting\['letter-spacing'] (float) – Start value of the letter spacing. Default 0. * $formatting\['line-height'] (float) – Start value of the line height. Default 1.7. * $formatting\['paragraph-spacing'] (float) – Start value of the paragraph spacing. Default 1.5. * $formatting\['indent'] (boolean) – Whether the text has an indent. Default true. * $formatting\['justify'] (boolean) – Whether the text is justified. Default false. * $formatting\['show-chapter-notes'] (boolean) – Whether chapter notes are shown. Default true. * $formatting\['show-paragraph-tools'] (boolean) – Whether the paragraph tools can be toggled. Default true. * $formatting\['show-comments'] (boolean) – Whether the comment section is shown. Default true. * $formatting\['show-sensitive-content'] (boolean) – Whether sensitive content is shown. Default true. **Example:** ```php function child_modify_chapter_formatting_defaults( $formatting ) { $changes = array( 'font-size' => 90, 'letter-spacing' => 0.02, 'line-height' => 1.8, 'paragraph-spacing' => 2, 'indent' => false ); return array_merge( $formatting, $changes ); } add_filter( 'fictioneer_filter_chapter_default_formatting', 'child_modify_chapter_formatting_defaults' ); ``` --- ### `apply_filters( 'fictioneer_filter_chapter_group', $group, $group_index, $story_id )` Filters the array of grouped chapter data in the `fictioneer_story_chapters()` function before it is rendered in the chapter list on story pages. **$group:** * $group (string) – Name of the group. * $toggle_icon (string) – CSS classes for the group toggle icon (Font Awesome). * $data (array) – Array of chapter post data in render order. * $id (int) – Post ID * $story_id (int) – Story ID. * $status (string) – Status of the post. * $link (string) – Permalink of the post. Can be empty. * $timestamp (string) – Publish date of the post (Unix). * $password (boolean) – Whether the post has a password. * $list_date (string) – Publish date formatted for lists. * $grid_date (string) – Publish date formatted for grids. * $icon (string) – CSS classes for the chapter icon (Font Awesome). * $text_icon (string) – Text icon (if any). * $prefix (string) – Prefix for the title (if any). * $title (string) – Title of the post (never empty). * $list_title (string) – Alternative title of the post (used on small cards). * $words (int) – Word count of the post. * $warning (string) – Warning note of the post (if any). * $count (int) – Number of items in the group to be rendered. * $classes (array) – Array of CSS classes to be added to the group button. **Parameters:** * $group_index (int) – The current group index in render order, starting at 1. * $story_id (int) – Story ID. --- ### `apply_filters( 'fictioneer_filter_chapter_icon', $icon_html, $chapter_id, $story_id )` Filters the HTML of the chapter icon before it is appended or rendered. The display hierarchy is password icon > scheduled icon > text icon > chapter icon. **Parameters:** * $icon_html (string) – HTML for the chapter icon. * $chapter_id (int) – Post ID of the chapter. * $story_id (int|null) – Post ID of the story (if any). Unsafe. --- ### `apply_filters( 'fictioneer_filter_chapter_identity', $output, $args )` Filters the intermediate output array in the `_chapter-header.php` partial before it is imploded and rendered. Contains the HTML for the story link, chapter title (safe), and author meta nodes (see `fictioneer_get_chapter_author_nodes()`). Any of these items may be missing depending on the chapter’s configuration. **$output:** * $link (string) – HTML for the story back link. Unsafe. * $title (string) – HTML for the chapter title `
Custom donation link
'; return $fields; } add_filter( 'fictioneer_filter_profile_fields_support', 'child_add_custom_profile_support_field', 10, 2 ); ``` --- ### `apply_filters( 'fictioneer_filter_recommendations_card_args', $card_args, $args )` Filters the arguments passed to the `partials/_card-recommendation` template part in the `fictioneer_recommendations_list( $args )` function, normally added via the `fictioneer_recommendations_after_content` hook. **$card_args:** * $cache (boolean) – Return of `fictioneer_caching_active()`. * $order (string) – Current query order argument. Default 'desc'. * $orderby (string) – Current query orderby argument. Default 'modified'. * $ago (int|string) – Current date query argument part. Default 0. **$args:** * $current_page (int) – Current page if paginated or `1`. * $post_id (int) – Current post ID. * $recommendations (WP_Query) – Paginated query of all visible recommendations. * $queried_type (string) – `'fcn_recommendation'` --- ### `apply_filters( 'fictioneer_filter_recommendations_query_args', $query_args, $post_id )` Filters the arguments to query the recommendations in the `recommendations.php` template. **$query_args:** * $fictioneer_query_name (string) – `'recommendations_list'` * $post_type (string) – `'fcn_recommendation'` * $post_status (string) – `'publish'` * $order (string) – `'DESC'` or `'ASC'` * $orderby (string) – `'publish_date'` * $paged (int) – Current page number or `1`. * $posts_per_page (int) – `get_option( 'posts_per_page' )` * $update_post_term_cache – `! get_option( 'fictioneer_hide_taxonomies_on_recommendation_cards' )` * $date_query – `fictioneer_append_date_query()` **Parameters:** * $post_id (int) – Current post ID. --- ### `apply_filters( 'fictioneer_filter_removable_query_args', $query_args )` Filters the array of query args to be removed after being parsed on page load. **$query_args:** * $0 – `'success'` * $1 – `'failure'` * $3 – `'fictioneer_nonce'` * $4 – `'fictioneer-notice'` --- ### `apply_filters( 'fictioneer_filter_root_attributes', $attributes )` Filters the intermediate output array of the `fictioneer_root_attributes()` function in the `header.php` template before it is looped and rendered. Note that the array keys are used as attribute names and include hyphens. **$attributes:** * 'class' (string) – CSS classes. Depends on options, can be empty. * 'data-mode-default' (string) – Mode of the site, light or dark. Default 'dark'. * 'data-site-width-default' (string) – Site width in pixels (without unit). Default '960'. * 'data-theme' (string) – Active theme or child theme. Default 'default'. * 'data-mode' (string) – Active theme mode. Default empty (dark). * 'data-font-weight' (string) – Current font weight set (default, thinner, or normal). Default 'default'. * 'data-primary-font' (string) – CSS name of primary font. Default 'Open Sans'. * 'data-ajax-submit' (string|null) – Optional. Toggle to use AJAX comment submit. * 'data-ajax-nonce' (string|null) – Optional. Toggle to load nonce via AJAX. * 'data-ajax-auth' (string|null) – Optional. Toggle to load user login state via AJAX. * 'data-force-child-theme' (string|null) – Optional. Toggle to disable parent theme switch. * 'data-caching-active' – Optional. Whether the site is cached. * 'data-public-caching' (string|null) – Optional. Indicates that public caches are served to all users. * 'data-ajax-auth' (string|null) – Optional. Indicates that the logged-in status of users is set via AJAX. * 'data-edit-time' (string|null) – Optional. Time in minutes that logged-in users can edit their comments. * 'data-author-fingerprint' – Optional. Fingerprint hash of the post author. * 'data-age-confirmation' – Optional. Whether the age confirmation modal should be triggered. * 'data-fictioneer-{$key}-value' (string|null) – Optional. Stimulus controller values. --- ### `apply_filters( 'fictioneer_filter_rss_link', $feed, $post_type, $post_id )` Filters the RSS link returned by the `fictioneer_get_rss_link( $post_type, $post_id )` function. Note that the function will always return `false` if the `fictioneer_enable_theme_rss` option is not enabled, regardless of this filter. **Parameters:** * $feed (int) – The escaped RSS feed URL, either the main or story (chapters) feed. * $post_type (string) – The post type the RSS is for. This can differ from the current post type. * $post_id (int) – The post ID the RSS is for. This can differ from the current post ID. --- ### `apply_filters( 'fictioneer_filter_rss_main_query_args', $query_args )` Filters the query arguments for the main RSS feed in the `rss-rss-main.php` template. **Parameters:** * $query_args (array) – Associative array of query arguments. **Example:** ```php function child_exclude_protected_posts_from_main_rss( $query_args ) { $query_args['has_password'] = false; return $query_args; } add_filter( 'fictioneer_filter_rss_story_query_args', 'child_exclude_protected_posts_from_main_rss' ); ``` --- ### `apply_filters( 'fictioneer_filter_rss_story_query_args', $query_args, $story_id )` Filters the query arguments for the story RSS feed in the `rss-rss-story.php` template. **Parameters:** * $query_args (array) – Associative array of query arguments. * $story_id (int) – Post ID of the story. **Example:** ```php function child_exclude_protected_posts_from_story_rss( $query_args ) { $query_args['has_password'] = false; return $query_args; } add_filter( 'fictioneer_filter_rss_story_query_args', 'child_exclude_protected_posts_from_story_rss' ); ``` --- ### `apply_filters( 'fictioneer_filter_safe_title', $title, $post_id, $context, $args )` Filters the string returned by the `fictioneer_get_safe_title( $post_id )` function, after all tags and line breaks have been stripped. No further sanitization is applied here, so you can add HTML again. **Parameters:** * $title (string) – The sanitized title of the post. * $post_id (int) – The post ID. * $context (string|null) - Context regarding where or how the title is used. Unsafe. * $args (array) - Optional additional arguments. **Hooked Filters:** * `fictioneer_prefix_sticky_safe_title( $comments )` – Prepends icon to sticky blog posts. * `fictioneer_prefix_draft_safe_title( $comments )` – Prepends "Draft:" to drafts. **Example:** ```php function child_modify_chapter_list_title( $title, $post_id, $context ) { if ( ! in_array( $context, ['story-chapter-list', 'shortcode-chapter-list'] ) ) { return $title; } $other_title = 'Where you get that from'; if ( empty( $other_title ) ) { return $title; } $title = $title . ' — ' . $other_title; return $title; } add_filter( 'fictioneer_filter_safe_title', 'child_modify_chapter_list_title', 10, 3 ); ``` --- ### `apply_filters( 'fictioneer_filter_search_title', $html, $args )` Filters the HTML for the search title before it is rendered in the `search.php` template. The default title follows the "n Search Results" pattern. **Parameters:** * $html (string) – The title HTML. **$args:** * $post_type (string|int) – Selected post type option or 0. * $sentence (string|int) – Selected match option or 0. * $order (string|int) – Selected sort option or 0. * $orderby (string|int) – Selected order by option or 0. * $queried_genres (string|int) – Comma-separated list of selected genres to include or 0. * $queried_fandoms (string|int) – Comma-separated list of selected fandoms to include or 0. * $queried_characters (string|int) – Comma-separated list of selected characters to include or 0. * $queried_warnings (string|int) – Comma-separated list of selected warnings to include or 0. * $queried_tags (string|int) – Comma-separated list of selected tags to include or 0. * $queried_ex_genres (string|int) – Comma-separated list of selected genres to exclude or 0. * $queried_ex_fandoms (string|int) – Comma-separated list of selected fandoms to exclude or 0. * $queried_ex_characters (string|int) – Comma-separated list of selected characters to exclude or 0. * $queried_ex_warnings (string|int) – Comma-separated list of selected warnings to exclude or 0. * $queried_ex_tags (string|int) – Comma-separated list of selected tags to exclude or 0. * $is_advanced_search (boolean) – Whether advanced search option have been selected or not. --- ### `apply_filters( 'fictioneer_filter_shortcode_article_cards_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_article_cards` shortcode. The optional taxonomy arrays can include categories, tags, fandoms, genres, and characters. **$query_args:** * $fictioneer_query_name (string) – `'article_cards'` * $post_type (array) – `'$args['post_type']'` * $post_status (string) – `'publish'` * $ignore_sticky_posts (boolean) – `$args['ignore_sticky']` * $post__in (array|null) – `$args['post_ids']` * $order (string) – `$args['order']` * $orderby (string) – `$args['orderby']` * $paged (int) – Current main query page number. * $posts_per_page (int) – `$args['posts_per_page']` or `$args['count']` * $author_name (string|null) – `$args['author']` * $author__in (array|null) – `$args['author_ids']` * $author__not_in (array|null) – `$args['excluded_authors']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $tax_query (array|null) – `fictioneer_get_shortcode_tax_query( $args )` * $no_found_rows (boolean|null) – `true` if `$args['count'] > 0` **$args:** * $post_type (array) – The post types to query. Default `\['post']`. * $ignore_sticky (boolean) – Whether to ignore sticky posts. Default `false`. * $ignore_protected (boolean) – Whether to ignore protected posts. Default `false`. * $count (int) – Maximum number of posts. Default `-1`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $order (string) – Order argument. Default `'DESC'`. * $orderby (string) – Orderby argument. Default `'date'`. * $page (int) – Current main query page number. Default `1`. * $posts_per_page (int) – Number of posts per page. Defaults to WordPress. * $post_ids (array) – Limit posts to specific post IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $taxonomies (array) – Array of arrays of required taxonomy names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_blog_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_blog` shortcode. **$query_args:** * $fictioneer_query_name (string) – `'blog_shortcode'` * $post_type (string) – `post` * $post_status (string) – `'publish'` * $ignore_sticky_posts (boolean) – `$args['ignore_sticky']` * $author_name (string|null) – `$args['author']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $paged (int) – Current main query page number. * $posts_per_page (int) – `$args['posts_per_page']` * $tax_query (array|null) – `fictioneer_get_shortcode_tax_query( $args )` **$args:** * $posts_per_page (int) – The number of posts per page. Defaults to WordPress. * $page (int) – Current main query page number. Default `1`. * $ignore_sticky (boolean) – Optional. Whether to ignore sticky posts. Default `false`. * $ignore_protected (boolean) – Optional. Whether to ignore protected posts. Default `false`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_chapters_card_footer', $footer_items, $post, $story, $args )` Filters the intermediate output array in the `_latest-chapters.php` partial before it is imploded and rendered. Contains statistics with icons such as the number of chapters, words, dates, and so forth. **$footer_items:** * $words (string|null) – HTML for the total word count (if more than 0). * $publish_date (string) – Conditional. HTML for the publish date. * $modified_date (string) – Conditional. HTML for the modified date. * $comments (string) – HTML for the number of comments. * $status (string|null) – Conditional. HTML for the story status. **Parameters** * $post (WP_Post) – The post object. * $story (array|null) – Collection of story post data. Unsafe. * $args (array) – Arguments passed to the partial. --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_chapters_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_latest_chapters` shortcode. The optional taxonomy arrays can include categories, tags, fandoms, genres, and characters. **$query_args:** * $fictioneer_query_name (string) – `'latest_chapters'` or `'latest_chapters_compact'` * $post_type (string) – `'fcn_chapter'` * $post_status (string) – `'publish'` * $order (string) – `$args['order']` * $orderby (string) – `$args['orderby']` * $posts_per_page (int) – `$args['count'] + 8` (buffer for invalid posts) * $post__in (array) – `$args['post_ids']` * $author_name (string|null) – `$args['author']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $meta_key (string) – `'fictioneer_chapter_hidden'` * $meta_value (int) – `0` * $tax_query (array|null) – `fictioneer_get_shortcode_tax_query( $args )` * $no_found_rows (boolean) – `true` * $update_post_term_cache (boolean) – `false` **$args:** * $simple (boolean) – Whether to render the simple variants. Default `false`. * $count (int) – Maximum number of posts. Default `-1`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $order (string) – Order argument. Default `'DESC'`. * $orderby (string) – Orderby argument. Default `'date'`. * $spoiler (boolean) – Optional. Show preview un-obfuscated. Default `false`. * $source (boolean) – Optional. Show chapter source story. Default `true`. * $post_ids (array) – Limit posts to specific post IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $ignore_protected (boolean) – Whether to ignore protected posts. Default `false`. * $taxonomies (array) – Array of arrays of required taxonomy names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_posts_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_latest_posts` shortcode. The optional taxonomy arrays can include categories and tags. **$query_args:** * $fictioneer_query_name (string) – `'latest_posts'` * $post_type (string) – `'post'` * $post_status (string) – `'publish'` * $ignore_sticky_posts (boolean) – `true` * $post__in (array) – `$args['post_ids']` * $order (string) – `'DESC'` * $orderby (string) – `'date'` * $posts_per_page (int) – `$args['count']` * $author_name (string|null) – `$args['author']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $no_found_rows (boolean) – `true` * $update_post_term_cache (boolean) – `false` **$args:** * $count (int) – Maximum number of posts. Default `-1`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $post_ids (array) – Limit posts to specific post IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $ignore_protected (boolean) – Whether to ignore protected posts. Default `false`. * $taxonomies (array) – Array of arrays of required taxonomy names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_recommendations_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_latest_recommendations` shortcode. The optional taxonomy arrays can include categories, tags, fandoms, genres, and characters. **$query_args:** * $fictioneer_query_name (string) – `'latest_recommendations'` or `'latest_recommendations_compact'` * $post_type (string) – `'fcn_recommendation'` * $post_status (string) – `'publish'` * $post__in (array) – `$args['post_ids']` * $order (string) – `$args['order']` * $orderby (string) – `$args['orderby']` * $posts_per_page (int) – `$args['count']` * $author_name (string|null) – `$args['author']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $tax_query (array|null) – `fictioneer_get_shortcode_tax_query( $args )` * $no_found_rows (boolean) – `true` **$args:** * $count (int) – Maximum number of posts. Default `-1`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $order (string) – Order argument. Default `'DESC'`. * $orderby (string) – Orderby argument. Default `'date'`. * $post_ids (array) – Limit posts to specific post IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $ignore_protected (boolean) – Whether to ignore protected posts. Default `false`. * $taxonomies (array) – Array of arrays of required taxonomy names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_stories_card_footer', $footer_items, $post, $story, $args )` Filters the intermediate output arrays in the `_latest-stories.php` and `_latest-stories-compact.php` partials before they are imploded and rendered. Contains statistics with icons such as the number of chapters, words, dates, and so forth. **$footer_items:** * $chapters (string) – HTML for the number of chapters. * $words (string|null) – HTML for the total word count (if more than 0). * $publish_date (string) – Conditional. HTML for the publish date. * $modified_date (string) – Conditional. HTML for the modified date. * $status (string) – HTML for the status. **Parameters** * $post (WP_Post) – The post object. * $story (array) – Collection of story post data. * $args (array) – Arguments passed to the partial. --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_stories_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_latest_stories` shortcode. The optional taxonomy arrays can include categories, tags, fandoms, genres, and characters. **$query_args:** * $fictioneer_query_name (string) – `'latest_stories'` or `'latest_stories_compact'` * $post_type (string) – `'fcn_story'` * $post_status (string) – `'publish'` * $post__in (array) – `$args['post_ids']` * $order (string) – `$args['order']` * $orderby (array) * $fictioneer_story_sticky – `'DESC'` * `$args['orderby']` – `$args['order']` * $posts_per_page (int) – `$args['count']` * $meta_query (array) * $relation (string) – `'OR'` * (array) * $key – `'fictioneer_story_hidden'` * $value – `'0'` * (array) * $key – `'fictioneer_story_hidden'` * $compare – `'NOT EXISTS'` * $author_name (string|null) – `$args['author']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $tax_query (array|null) – `fictioneer_get_shortcode_tax_query( $args )` * $no_found_rows (boolean) – `true` **$args:** * $count (int) – Maximum number of posts. Default `-1`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $order (string) – Order argument. Default `'DESC'`. * $orderby (string) – Orderby argument. Default `'date'`. * $post_ids (array) – Limit posts to specific post IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $ignore_protected (boolean) – Whether to ignore protected posts. Default `false`. * $taxonomies (array) – Array of arrays of required taxonomy names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_updates_card_footer', $footer_items, $post, $story, $args )` Filters the intermediate output array in the `_latest-updates.php` partial before it is imploded and rendered. Contains statistics with icons such as the number of chapters, words, dates, and so forth. **$footer_items:** * $chapters (string) – HTML for the number of chapters. * $words (string|null) – HTML for the total word count (if more than 0). * $modified_date (string) – Conditional. HTML for the modified date. * $status (string) – HTML for the status. **Parameters** * $post (WP_Post) – The post object. * $story (array) – Collection of story post data. * $args (array) – Arguments passed to the partial. **Example:** ```php function child_remove_modified_date_from_latest_updates( $footer_items ) { unset( $footer_items['modified_date'] ); return $footer_items; } add_filter( 'fictioneer_filter_shortcode_latest_updates_card_footer', 'child_remove_modified_date_from_latest_updates' ); ``` --- ### `apply_filters( 'fictioneer_filter_shortcode_latest_updates_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_latest_updates` shortcode. The optional taxonomy arrays can include categories, tags, fandoms, genres, and characters. **$query_args:** * $fictioneer_query_name (string) – `'latest_updates'` or `'latest_updates_compact'` * $post_type (string) – `'fcn_story'` * $post_status (string) – `'publish'` * $post__in (array) – `$args['post_ids']` * $order (string) – `$args['order']` * $orderby (string) – `'meta_value'` * $meta_key (string) – `'fictioneer_chapters_added'` * $posts_per_page (int) – `$args['count'] + 4` (buffer for invalid posts) * $meta_query (array) * $relation (string) – `'OR'` * (array) * $key – `'fictioneer_story_hidden'` * $value – `'0'` * (array) * $key – `'fictioneer_story_hidden'` * $compare – `'NOT EXISTS'` * $author_name (string|null) – `$args['author']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $tax_query (array|null) – `fictioneer_get_shortcode_tax_query( $args )` * $no_found_rows (boolean) – `true` **$args:** * $type (string) – Either `'default'`, `'simple'`, `'single'`, and `'compact'`. * $single (boolean) – Whether to show only one chapter item. Default `false`. * $count (int) – Maximum number of posts. Default `-1`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $order (string) – Order argument. Default `'DESC'`. * $post_ids (array) – Limit posts to specific post IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $ignore_protected (boolean) – Whether to ignore protected posts. Default `false`. * $taxonomies (array) – Array of arrays of required taxonomy names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_{type}_list_meta', $meta, $post, $story, $chapter )` Filters the intermediate output array for the meta row in list-type shortcode partials before it is imploded and rendered. Can contain the story, chapter, word count, comment count, chapter count, publish date, author, status, and age rating depending on the shortcode and applied parameters. Type can be `latest_chapter`, `latest_stories`, or `latest_updates`. **Parameters** * $meta (array) – Associative array of HTML nodes to be rendered. * $post (WP_Post) – The current post object. * $story (array|null) – Collection of story post data. Unsafe. * $chapter (WP_Post|null) – The chapter post object (only for Latest Updates). Unsafe. --- ### `apply_filters( 'fictioneer_filter_shortcode_{type}_terms', $terms, $post, $args, $story_data )` Filters the intermediate output array of term HTML nodes (tags, genres, fandoms, etc.) in shortcodes before it is imploded and rendered, with the term IDs as keys. Type can be `latest_stories`, `latest_updates`, `latest_recommendations`, or `article_cards`. You can use `$args['type']` to further differentiate between shortcode variants. **Parameters** * $terms (array) – Associative array of HTML nodes to be rendered. * $post (WP_Post) – The current post object. * $args (array) – Arguments passed to the shortcode. * $story_data (array|null) – Collection of story post data. Unsafe. --- ### `apply_filters( 'fictioneer_filter_shortcode_list_attributes', $attributes, $post, $context )` Filters the intermediate output array of HTML attributes inside list-type shortcodes before they are rendered. The keys are used as attribute names. Make sure to account for already existing attributes. **Parameters:** * $attributes (array) - Associative array of attributes to be rendered. * $post (WP_Post) – The current post object. * $context (string) - Either `latest-chapters`, `latest-stories`, or `latest-updates`. --- ### `apply_filters( 'fictioneer_filter_shortcode_list_title', $title, $post, $context )` Filters the intermediate output array of HTML attributes inside list-type shortcodes before they are rendered. The keys are used as attribute names. Make sure to account for already existing attributes. **Parameters:** * $title (string) – The current title to be rendered. * $post (WP_Post) – The current post object. * $context (string|null) - Either `latest-chapters`, `latest-stories`, or `latest-updates`. --- ### `apply_filters( 'fictioneer_filter_shortcode_showcase_query_args', $query_args, $args )` Filters the WP_Query arguments in the `fictioneer_showcase` shortcode. The optional taxonomy arrays can include categories, tags, fandoms, genres, and characters. **$query_args:** * $fictioneer_query_name (string) – `'showcase'` * $post_type (string) – `$args['type']` * $post_status (string) – `'publish'` * $post__in (array) – `$args['post_ids']` * $order (string) – `$args['order']` * $orderby (string) – `$args['orderby']` * $posts_per_page (int) – `$args['count']` * $author_name (string|null) – `$args['author']` * $category__not_in (array|null) – `$args['excluded_cats']` * $tag__not_in (array|null) – `$args['excluded_tags']` * $tax_query (array|null) – `fictioneer_get_shortcode_tax_query( $args )` * $update_post_term_cache (boolean) – `false` * $no_found_rows (boolean) – `true` **$args:** * $post_type (string) – Either `'fcn_collection'`, `'fcn_story'`, `'fcn_chapter'`, or `'fcn_recommendation'`. * $count (int) – Maximum number of posts. Default `-1`. * $author (boolean|string) – Limit posts to a specific author. Default `false`. * $order (string) – Order argument. Default `'DESC'`. * $orderby (string) – Orderby argument. Default `'date'`. * $post_ids (array) – Limit posts to specific post IDs. Default empty. * $author_ids (array) – Limit posts to specific author IDs. Default empty. * $excluded_authors (array) – Exclude specific author IDs. Default empty. * $excluded_tags (array) – Exclude specific tag names. Default empty. * $excluded_cats (array) – Exclude specific category names. Default empty. * $ignore_protected (boolean) – Whether to ignore protected posts. Default `false`. * $taxonomies (array) – Array of arrays of required taxonomy names. Default empty. * $relation (string) – Relationship between taxonomies. Default `'AND'`. * $no_cap (boolean) – Whether to hide captions. Default `false`. * $classes (string) – String of additional CSS classes. Default empty. --- ### `apply_filters( 'fictioneer_filter_shortcode_terms_query_args', $query_args, $attr )` Filters the WP_Term_Query arguments in the `fictioneer_terms` shortcode. **$query_args:** * 'fictioneer_query_name' (string) – `'terms_shortcode'` * 'taxonomy' (string) – As specified in the shortcode. Either `'category'`, `'post_tag'`, `'fcn_genre'`, `'fcn_fandom'`, `'fcn_character'`, or `'fcn_content_warning'`. * 'orderby' (string) – As specified in the shortcode. Default `'count'`. * 'order' (string) – As specified in the shortcode. Default `'desc'`. * 'number' (int|null) – As specified in the shortcode. Default `null`. * 'hide_empty' (bool) – As specified in the shortcode. Default `true`. **$attr:** * 'term_type' (string|null) – Either `'category'`, `'tag'`, `'genre'`, `'fandom'`, `'character'`, or `'warning'`. Default `'tag'`. * 'post_id' (int|null) – Limit terms to a specific post. Default `0`. * 'count' (int|null) – Limit number of queried terms. Default `-1` (all). * 'orderby' (string|null) – Default `'count'`. * 'order' (string|null) – Default `'desc'`. * 'show_empty' (boolean|null) – Whether to query unused terms. Default `false`. * 'show_count' (boolean|null) – Whether to show the term counts. Default `false`. * 'classes' (string|null) – String of additional outer CSS classes. Default empty. * 'inner_classes' (string|null) – String of additional inner CSS classes. Default empty. * 'style' (string|null) – String of additional outer inline styles. Default empty. * 'inner_style' (string|null) – String of additional inner inline styles. Default empty. * 'empty' (string|null) – Override message for empty query result. Default empty. --- ### `apply_filters( 'fictioneer_filter_sitemap_page_template_excludes', $excludes )` Filters the exclusion array of page templates for the custom theme sitemap. By default, these are `'user-profile.php'`, `'singular-bookmarks.php'`, `'singular-bookshelf.php'`, and `'singular-bookshelf-ajax.php'`. **Parameter:** * $excludes (array) – Array of excluded page templates. --- ### `apply_filters( 'fictioneer_filter_sof_date_options', $options, $current_url, $args )` Filters the option array of URL/label tuples for the date popup menu in the `fictioneer_sort_order_filter_interface( $args )` function before it is rendered. Can be any positive integer (days) or [strtotime](https://www.php.net/manual/en/function.strtotime.php) compatible string. See `fictioneer_append_date_query()`. Includes '0', '1', '3', '1 week ago', '1 month ago', '3 months ago', '6 months ago', and '1 year ago'. **$options:** * '0' (array) – Tuple of $label (Any Date) and unescaped $url (`...ago=0&...#sof`). * '1' (array) – Tuple of $label (Past 24 Hours) and unescaped $url (`...ago=1&...#sof`). * '3' (array) – Tuple of $label (Past 3 Days) and unescaped $url (`...ago=3&...#sof`). * '1_week_ago' (array) – Tuple of $label (Past Week) and unescaped $url (`...ago=1+week+ago&...#sof`). * '1_month_ago' (array) – Tuple of $label (Past Month) and unescaped $url (`...ago=1+month+ago&...#sof`). * '3_months_ago' (array) – Tuple of $label (Past 3 Months) and unescaped $url (`...ago=3+months+ago&...#sof`). * '6_months_ago' (array) – Tuple of $label (Past 6 Months) and unescaped $url (`...ago=6+months+ago&...#sof`). * '1_year_ago' (array) – Tuple of $label (Past Year) and unescaped $url (`...ago=1+year+ago&...#sof`). **Parameters:** * $current_url (array) – Current URL with all query parameters to sort, order, and filter included. Used to build option links. **$args:** * $current_page (int) – Current page if paginated or `1`. * $post_id (int) – Current post ID. * $queried_type (string) – Queried post type. * $query_args (array) – WP_Query arguments used. * $order (string) – Current order. Defaults to `'DESC'`. * $orderby (string) – Current orderby. Defaults to `'modified'` in list templates and `'date'` in archives. --- ### `apply_filters( 'fictioneer_filter_sof_orderby_options', $options, $current_url, $args )` Filters the option array of URL/label tuples for the orderby popup menu in the `fictioneer_sort_order_filter_interface( $args )` function before it is rendered. Allows and includes 'modified', 'date', 'title', and 'rand' (excluded). **$options:** * 'modified' (array) – Tuple of $label (Updated) and unescaped $url (`...orderby=modified&...#sof`). * 'date' (array) – Tuple of $label (Published) and unescaped $url (`...orderby=date&...#sof`). * 'title' (array) – Tuple of $label (By Title) and unescaped $url (`...orderby=title&...#sof`). **Parameters:** * $current_url (array) – Current URL with all query parameters to sort, order, and filter included. Used to build option links. **$args:** * $current_page (int) – Current page if paginated or `1`. * $post_id (int) – Current post ID. * $queried_type (string) – Queried post type. * $query_args (array) – WP_Query arguments used. * $order (string) – Current order. Defaults to `'DESC'`. * $orderby (string) – Current orderby. Defaults to `'modified'` in list templates and `'date'` in archives. --- ### `apply_filters( 'fictioneer_filter_sof_post_type_options', $options, $current_url, $args )` Filters the option array of URL/label tuples for the post type popup menu in the `fictioneer_sort_order_filter_interface( $args )` function before it is rendered. Only rendered in archives. Includes 'any', 'post, 'fcn_story', 'fcn_chapter', 'fcn_collection', and 'fcn_recommendation'. **$options:** * $any (array) – Tuple of $label (All Posts) and unescaped $url (`...post_type=any&...#sof`). * $post (array) – Tuple of $label (Blog Posts) and unescaped $url (`...post_type=post&...#sof`). * $fcn_story (array) – Tuple of $label (Stories) and unescaped $url (`...post_type=fcn_story&...#sof`). * $fcn_chapter (array) – Tuple of $label (Chapters) and unescaped $url (`...post_type=fcn_chapter&...#sof`). * $fcn_collection (array) – Tuple of $label (Collections) and unescaped $url (`...post_type=fcn_collection&...#sof`). * $fcn_recommendation (array) – Tuple of $label (Recommendations) and unescaped $url (`...post_type=fcn_recommendation&...#sof`). **Parameters:** * $current_url (array) – Current URL with all query parameters to sort, order, and filter included. Used to build option links. **$args:** * $current_page (int) – Current page if paginated or `1`. * $post_id (int) – Current post ID. * $queried_type (string) – Queried post type. * $query_args (array) – WP_Query arguments used. * $order (string) – Current order. Defaults to `'DESC'`. * $orderby (string) – Current orderby. Defaults to `'modified'` in list templates and `'date'` in archives. --- ### `apply_filters( 'fictioneer_filter_stories_card_args', $card_args, $args )` Filters the arguments passed to the `partials/_card-story` template part in the `fictioneer_stories_list( $args )` function, normally added via the `fictioneer_stories_after_content` hook. **$card_args:** * $cache (boolean) – Return of `fictioneer_caching_active()`. * $order (string) – Current query order argument. Default 'desc'. * $orderby (string) – Current query orderby argument. Default 'modified'. * $ago (int|string) – Current date query argument part. Default 0. * $show_latest (boolean|null) – Whether to show the latest chapters. Default `false`. * $hide_author (boolean|null) – Whether to hide the author. Default `false`. **$args:** * $current_page (int) – Current page if paginated or `1`. * $post_id (int) – Current post ID. * $stories (WP_Query) – Paginated query of all published stories. * $queried_type (string) – `'fcn_story'` --- ### `apply_filters( 'fictioneer_filter_stories_query_args', $query_args, $post_id )` Filters the arguments to query the stories in the `stories.php` template. **$query_args:** * $fictioneer_query_name (string) – `'stories_list'` * $post_type (string) – `'fcn_story'` * $post_status (string) – `'publish'` * $order (string) – `'DESC'` or `'ASC'` * $orderby (array) – `'modified'`, `'date'`, `'title'`, or `'rand'` * $paged (int) – Current page number or `1`. * $posts_per_page (int) – `get_option( 'posts_per_page' )` * $meta_query (array) * $relation (string) – `'OR'` * (array) * $key – `'fictioneer_story_hidden'` * $value – `'0'` * (array) * $key – `'fictioneer_story_hidden'` * $compare – `'NOT EXISTS'` * $update_post_term_cache – `! get_option( 'fictioneer_hide_taxonomies_on_story_cards' )` * $date_query – `fictioneer_append_date_query()` **Parameters:** * $post_id (int) – Current post ID. --- ### `apply_filters( 'fictioneer_filter_stories_statistics', $statistics, $args )` Filters the statistics for all stories rendered by the `fictioneer_stories_statistics( $args )` function, normally added via the `fictioneer_stories_after_content` hook. Each tuple in the `$statistics` array has `$label` and `$content`. **$statistics:** * $stories (string) – Number of published stories. * $words (string) – Total word count of published stories. * $comments (string) – Total number of comments in stories/chapters. * $reading (string) – Total reading time approximated from word count. **$args:** * $current_page (int) – Current page if paginated or `1`. * $post_id (int) – Current post ID. * $stories (WP_Query) – Paginated query of all published stories. --- ### `apply_filters( 'fictioneer_filter_story_buttons', $output, $args )` Filters the intermediate output array of the `fictioneer_get_story_buttons( $args )` function before it is imploded and returned. Used inside `fictioneer_story_actions()` and rendered via the `fictioneer_story_after_content` hook. **$output:** * $subscribe (string|null) – Optional. HTML of the subscribe button and popup menu. * $epub (string|null) – Optional. HTML for the ePUB (generated) download button. * $ebook (string|null) – Optional. HTML for the ebook (uploaded) download button. * $reminder (string|null) – Optional. HTML for the Read Later button. * $follow (string|null) – Optional. HTML for the Follow button. **$args:** * $story_data (array) – Collection of story data. * $story_id (int) – Current story (post) ID. --- ### `apply_filters( 'fictioneer_filter_story_header_classes', $classes, $args )` Filters the intermediate output array of CSS classes for the story header before it is imploded and rendered. Depending on the Customizer and story settings, it can include `story__header`, `_no-tax`, `_no-thumbnail`, `padding-top`, `padding-left`, and `padding-right`. **$classes:** * (array) – Collection of strings depending on the Customizer and story settings; can include `story__header`, `_no-tax`, `_no-thumbnail`, `padding-top`, `padding-left`, and `padding-right`. **$args:** * $story_data (array) – Collection of story data. * $story_id (int) – Current story (post) ID. * $context (string|null) – Either `null` or `'shortcode'`. Default `null`. Unsafe. --- ### `apply_filters( 'fictioneer_filter_media_buttons', $output, $args )` Filters the intermediate output array of the `fictioneer_filter_media_buttons( $args )` function before it is imploded and returned. Used in chapter, posts, and stories. **$output:** * $share (string|null) – Optional. HTML for share modal button. * $post_rss (string|null) – Optional. HTML for the post RSS feed (if any). * $feedly (string|null) – Optional. HTML for the Feedly link. * $inoreader (string|null) – Optional. HTML for the Inoreader link. **$args:** * $post_id (int|null) – Optional. The post ID to use. Defaults to current post ID. Unsafe. * $post_type (string|null) – Optional. The post type to use. Defaults to current post type. Unsafe. * $share (bool|null) – Optional. Whether to show the share modal button. Default true. Unsafe. * $rss (bool|null) – Optional. Whether to show the RSS feed buttons. Default true. Unsafe. --- ### `apply_filters( 'fictioneer_filter_splide_breakpoints', $breakpoints, $json_string, $uid )` Filters the associative array of Splide breakpoints returned by the `fictioneer_extract_splide_breakpoints()` function. These breakpoints are used to generate dynamic placeholder styles for a specific slider. Modifying the breakpoints at this stage is generally inadvisable, the filter exists primarily for completeness and edge cases. **Parameters:** * $breakpoints (array) – Breakpoint data or empty. * $json_string (string) – Stringified Splide JSON. * $uid (string|null) – Optional. Unique ID of the target element (only for reference). --- ### `apply_filters( 'fictioneer_filter_splide_loading_style', $style, $uid, $breakpoints, $json_string )` Filters the dynamically generated loading style for a specific Splide slider before it is minified, wrapped in a `