Visual Portfolio exposes filters along the whole render path: the options a gallery resolves, the query it runs, the items it builds, the markup of each item, and the assets it loads. Every filter name is prefixed vpf_.
add_filter( 'vpf_extend_query_args', function ( $args, $options ) {
$args['post_status'] = array( 'publish', 'private' );
return $args;
}, 10, 2 );
Options and query
Filter Arguments Purpose vpf_get_options$optionsThe resolved options of a gallery before anything is rendered or queried. vpf_control_value$value, $name, $post_idThe value of one option of a Saved Layout. vpf_extend_options_before_query_args$optionsOptions right before the query arguments are built. vpf_extend_query_args$args, $optionsArguments of the WP_Query (Posts source) or the images array (Media source). Pro sources inject their items here. vpf_custom_query_result$result, $optionsReturn a query object or an items array to replace the built-in query. Also asked for the page count. vpf_custom_items$items, $optionsThe resolved items before rendering. vpf_custom_output$output, $optionsReturn a string to replace the whole gallery output. vpf_custom_filter_terms$terms, $optionsTerms the Filter element lists. vpf_extend_filter_items$items, $optionsThe filter items: label, URL, active state and count. vpf_extend_sort_items$items, $optionsThe sort options, as slug => label. vpf_extend_sort_item_url$url, $slug, $optionsURL of one sort item. vpf_get_pagenum_link$url, $query_argURLs used by filter, sort and pagination. vpf_pagination_args$args, $optionsArguments of the pagination renderer. vpf_pagination_item_data$item, $args, $optionsOne pagination item. vpf_allow_taxonomy_for_filter$allow, $taxonomyLet a taxonomy into the Filter. See Custom taxonomy for filter . vpf_extend_posts_source$sourcesEntries of the Posts source selector.
Items and templates
Filter Arguments Purpose vpf_post_item_args$args, $postData of one post-based item. vpf_image_item_args$args, $imageData of one Media item. vpf_each_item_args$argsData of any item right before its template renders. vpf_each_item_tag_name$tag, $argsThe item tag, article or div. vpf_each_item_tag_attrs$attrs, $argsAttributes of the item element. vpf_item_aria_label$label, $argsThe aria-label of the item link. vpf_each_item_meta_author_enabled, ..._categories_enabled, ..._comments_enabled, ..._date_enabled, ..._reading_time_enabled, ..._views_enabled$enabled, $args, $optionsSwitch one meta element on or off per item. vpf_each_item_inline_meta_enabled$enabled, $args, $optionsWhether the inline meta line (comments, views, reading time) renders. vpf_extend_portfolio_class$class, $optionsClasses of the gallery wrapper. vpf_extend_portfolio_items_class$class, $optionsClasses of the items wrapper. vpf_extend_portfolio_data_attributes$attrs, $optionsThe data-vp-* attributes of the wrapper. vpf_layout_element_options$optionsOptions used when the layout elements of a position are printed. vpf_include_template$template, $name, $argsPath of a PHP template. vpf_include_template_args$args, $nameArguments of a template. vpf_include_template_style$style, $name, $deps, $ver, $mediaStylesheet of a template. vpf_allowed_template_dirs$dirsDirectories a template may be loaded from. This is a security allow-list.
Lightbox
Filter Arguments Purpose vpf_popup_image_data$data, $image_id, $argsData of a lightbox image: URL, sizes and caption. vpf_popup_custom_image_data$data, $image_idProvide lightbox data for an image that is not an attachment. Pro social images use it. vpf_popup_output$output, $argsThe <template> markup of a lightbox slide.
Controls and blocks
Filter Arguments Purpose vpf_register_control$argsArguments of a control at registration. vpf_registered_control_args$argsArguments of each control when it is printed. vpf_registered_controls$controlsAll controls. vpf_registered_categories$categoriesSidebar panels. vpf_register_block_attributes$attributes, $controlsBlock attributes generated from controls. vpf_register_block_attribute_data$data, $controlThe definition of one attribute. vpf_extend_image_controls$controls, $nameFields of the per-image modal of the Media source. vpf_extend_layouts / vpf_extend_layout_{name}_controls$layouts / $controlsAdd a layout, or extend one. vpf_extend_tiles$tilesTiles presets. vpf_extend_items_styles / vpf_extend_item_style_{name}_controls$styles / $controlsAdd a skin, or extend one. vpf_items_style_builtin_controls, vpf_items_style_builtin_controls_options$controls, ...The generated skin controls and their option lists. vpf_extend_filters / vpf_extend_filter_{name}_controls$filters / $controlsAdd a filter style, or extend one. vpf_extend_sort / vpf_extend_sort_{name}_controls$sorts / $controlsSort styles. vpf_extend_pagination / vpf_extend_pagination_{name}_controls$paginations / $controlsPagination styles. vpf_controls_dynamic_css_value, vpf_controls_dynamic_css_styles_arraysee Controls Dynamic CSS generated from controls that carry a style key.
Extend Layouts
Filter Name Attributes Description vpf_extend_layouts $layouts custom layouts vpf_extend_layout_NAME_controls $controls extend specific layout controls by NAME
<?php
add_filter( 'vpf_extend_layouts', 'my_filter_vpf_extend_layouts' );
function my_filter_vpf_extend_layouts( $layouts ) {
return array_merge( $layouts, array(
'new_layout' => array(
'title' => esc_html__( 'New Layout', 'text_domain' ),
'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.75" y="0.75" width="7.35714" height="7.35714" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><rect x="11.8929" y="0.75" width="7.35714" height="7.35714" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><rect x="11.8929" y="11.8929" width="7.35714" height="7.35714" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><rect x="0.75" y="11.8929" width="7.35714" height="7.35714" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/></svg>',
'controls' => array(
... controls (read below) ...
),
),
) );
}
Note: On the portfolio will be added data attribute [data-vp-layout=”new_layout”] , so you can play with it and use jQuery events to initialize the new layout.
Extend Tiles
Filter Name Attributes Description vpf_extend_tiles $tiles custom tiles
<?php
add_filter( 'vpf_extend_tiles', 'my_filter_vpf_extend_tiles' );
function my_filter_vpf_extend_tiles( $tiles ) {
return array_merge( $tiles, array(
array(
'value' => '1|1,0.5|',
),
array(
'value' => '2|1,1|',
),
) );
}
Example: 3|1,0.5|2,0.25|
3 columns in row
First item 100% width and 50% height
Second item 200% width and 25% height
Extend Items Styles
Filter Name Attributes Description vpf_extend_items_styles $items_styles custom items styles vpf_extend_item_style_NAME_controls $controls extend specific items styles by NAME vpf_items_style_builtin_controls $options extend the list of default builtin_controls
<?php
add_filter( 'vpf_extend_items_styles', 'my_filter_vpf_extend_items_styles' );
function my_filter_vpf_extend_items_styles( $items_styles ) {
return array_merge( $items_styles, array(
'new_items_style' => array(
'title' => esc_html__( 'New Items Style', 'visual-portfolio' ),
'icon' => '<svg width="20" height="23" viewBox="0 0 20 23" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="5.89285" y1="22.25" x2="14.1071" y2="22.25" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><rect x="0.75" y="0.75" width="18.5" height="18.625" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/></svg>',
'builtin_controls' => array(
'images_rounded_corners' => true,
'show_title' => true,
'show_categories' => true,
'show_date' => true,
'show_author' => true,
'show_comments_count' => true,
'show_views_count' => true,
'show_reading_time' => true,
'show_excerpt' => true,
'show_icons' => true,
'align' => true, // true, false, 'extended'
),
'controls' => array(
... controls (read below) ...
),
),
) );
}
Note: Make sure that you added template in your_theme/visual-portfolio/items-list/items-style/new_items_style . See the structure of default templates to getting started.
Extend Filters
Filter Name Attributes Description vpf_extend_filters $filters custom filters vpf_extend_filter_items $items, $options array with filter items vpf_extend_filter_NAME_controls $controls extend specific filters by NAME
<?php
add_filter( 'vpf_extend_filters', 'my_filter_vpf_extend_filters' );
function my_filter_vpf_extend_filters( $filters ) {
return array_merge( $filters, array(
'new_filter' => array(
'title' => esc_html__( 'New Filter', 'visual-portfolio' ),
'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.75" y="5.89286" width="18.5" height="7.07143" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><path d="M0.857143 11.1071V12.8214C0.857143 13.2948 1.2409 13.6786 1.71429 13.6786H18.2857C18.7591 13.6786 19.1429 13.2948 19.1429 12.8214V11.1071L19.5714 10.25C19.8081 10.25 20 10.4419 20 10.6786V12.8214C20 13.7682 19.2325 14.5357 18.2857 14.5357H1.71429C0.767512 14.5357 0 13.7682 0 12.8214V10.6786C0 10.4419 0.191878 10.25 0.428571 10.25L0.857143 11.1071Z" fill="currentColor"/></svg>',
'controls' => array(
... controls (read below) ...
),
),
) );
}
Note: Make sure that you added template in your_theme/visual-portfolio/items-list/filter/new_filter . See the structure of default templates to getting started.
Extend Sorts
Filter Name Attributes Description vpf_extend_sort $sort custom sorts vpf_extend_sort_items $items, $options array with sort items vpf_extend_sort_NAME_controls $controls extend specific sorts by NAME
<?php
add_filter( 'vpf_extend_sort', 'my_filter_vpf_extend_sort' );
function my_filter_vpf_extend_sort( $sorts ) {
return array_merge( $sorts, array(
'new_sort' => array(
'title' => esc_html__( 'New Sort', 'visual-portfolio' ),
'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.75" y="5.89286" width="18.5" height="7.07143" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><path d="M0.857143 11.1071V12.8214C0.857143 13.2948 1.2409 13.6786 1.71429 13.6786H18.2857C18.7591 13.6786 19.1429 13.2948 19.1429 12.8214V11.1071L19.5714 10.25C19.8081 10.25 20 10.4419 20 10.6786V12.8214C20 13.7682 19.2325 14.5357 18.2857 14.5357H1.71429C0.767512 14.5357 0 13.7682 0 12.8214V10.6786C0 10.4419 0.191878 10.25 0.428571 10.25L0.857143 11.1071Z" fill="currentColor"/></svg>',
'controls' => array(
... controls (read below) ...
),
),
) );
}
Note: Make sure that you added template in your_theme/visual-portfolio/items-list/sort/new_sort . See the structure of default templates to getting started.
Filter Name Attributes Description vpf_extend_pagination $pagination custom pagination vpf_extend_pagination_NAME_controls $controls extend specific paginations by NAME vpf_pagination_item_data $item_data, $args, $vp_options filter each pagination item data
<?php
add_filter( 'vpf_extend_pagination', 'my_pagination_vpf_extend_pagination' );
function my_pagination_vpf_extend_pagination( $pagination ) {
return array_merge( $pagination, array(
'new_pagination' => array(
'title' => esc_html__( 'New Pagination', 'visual-portfolio' ),
'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.75" y="5.89286" width="18.5" height="7.07143" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><path d="M0.857143 11.1071V12.8214C0.857143 13.2948 1.2409 13.6786 1.71429 13.6786H18.2857C18.7591 13.6786 19.1429 13.2948 19.1429 12.8214V11.1071L19.5714 10.25C19.8081 10.25 20 10.4419 20 10.6786V12.8214C20 13.7682 19.2325 14.5357 18.2857 14.5357H1.71429C0.767512 14.5357 0 13.7682 0 12.8214V10.6786C0 10.4419 0.191878 10.25 0.428571 10.25L0.857143 11.1071Z" fill="currentColor"/></svg>',
'controls' => array(
... controls (read below) ...
),
),
) );
}
Note: Make sure that you added template in your_theme/visual-portfolio/items-list/pagination/new_pagination . See the structure of default templates to getting started.
Assets, images, lazy loading
Filter Arguments Purpose vpf_enqueue_plugin_isotope, vpf_enqueue_plugin_flickr_justified_gallery, vpf_enqueue_plugin_swiper, vpf_enqueue_plugin_photoswipe, vpf_enqueue_plugin_fancybox, vpf_enqueue_plugin_simplebar, vpf_enqueue_plugin_lazysizes$enqueueReturn false to skip a vendor library. See Disable enqueued plugins . vpf_enqueue_dynamic_styles_inline_style$inlinePrint per-block CSS inline or through a script. vpf_global_data$dataThe VPData object printed in the head. vpf_images_lazyload$enabledGlobal switch of the plugin’s lazy loading. vpf_lazyload_images_blocked_classes, vpf_lazyload_images_blocked_src, vpf_lazyload_images_blocked_attributes$listImages to skip. vpf_lazyload_skip_image_with_attributes$skip, $attributesSkip one image. vpf_lazyload_images_new_attributes$attributesAttributes of a lazy-loaded image. vpf_lazyload_image_placeholder$placeholderPlaceholder URL. vpf_wp_get_attachment_image$html, $attachment_id, $size, $attrThe <img> of a gallery item.
Settings, breakpoints, sitemap
Filter Arguments Purpose vpf_settings_sections, vpf_settings_fields$sections / $fieldsTabs and fields of the settings page. vpf_default_breakpoint_xs, _sm, _md, _lg, _xl and vpf_breakpoint_xs, _sm, _md, _lg, _xl$pxDefault and effective breakpoints: 320, 576, 768, 992 and 1200. vpf_parse_sitemap_images_from_blocks, vpf_parse_sitemap_image_id_from_blocks$images, ...Images a post contributes to the Yoast, Rank Math and AIOSEO sitemaps.
Pro
Filter Purpose vpf_album_imagesImages of an album, used by Pro albums in REST and on render. vpf_taxonomy_query_args, vpf_taxonomy_item_args, vpf_taxonomy_available_taxonomies, vpf_taxonomy_album_max_imagesTaxonomies source. vpf_pro_social_settings, vpf_social_storage_networks, vpf_social_max_accounts_per_run, vpf_social_continuation_delay, vpf_social_sync_lock_timeout, vpf_social_item_lock_timeout, vpf_social_sync_use_queue, vpf_social_should_queue_media, vpf_social_video_url_needs_refresh, vpf_social_migration_batch_size, vpf_social_migration_batch_delay, vpf_social_api_instanceSocial feeds. vpf_pro_settings_sectionsPro settings tabs.
Deprecated
These filters still run, and each has a replacement: vpf_print_layout_control_args is now vpf_registered_control_args, vpf_get_layout_option is now vpf_control_value, vpf_extend_popup_image is now vpf_popup_image_data, vpf_extend_custom_popup_image is now vpf_popup_custom_image_data, vpf_print_popup_data is now vpf_popup_output, and vpf_wp_get_attachment_image_extend is now vpf_wp_get_attachment_image.