Skip to main content
Manual Selection allows you to handpick specific posts, portfolio items, pages, or any post type to display in your Visual Portfolio. This gives you complete control over which items appear and their display order.

Overview

Manual selection is configured using the ids posts source:
The order of IDs in the array determines the display order (when using post__in ordering).

Configuration

Post Type

When using manual selection, the post type is automatically set to any: From /classes/class-get-portfolio.php:1598-1604:
Manual selection supports mixing different post types in a single gallery (posts, pages, portfolio items, etc.).

Selecting Posts

In the block editor, the Specific Posts control provides a searchable dropdown: From /classes/class-admin.php:1390-1407:
The control:
  • Searches posts by title across all post types
  • Displays post title, post type, and status
  • Supports drag-and-drop reordering
  • Loads posts dynamically as you type

Order Control

Manual Order (post__in)

To preserve your selection order, use post__in ordering:
From /classes/class-get-portfolio.php:1566-1567:

Other Sort Options

You can override manual order with other sorting:
Available order options:
  • post__in - Manual selection order (recommended)
  • post_date - Publication date
  • title - Alphabetical by title
  • modified - Last modified date
  • id - Post ID
  • comment_count - Number of comments
  • rand - Random order
Most users should use post__in ordering to respect their manual curation.

Excluded Features

When using manual selection, these features are not available:

Excluded Posts

The excluded posts option is disabled: From /classes/class-admin.php:1418-1434:
Reason: Simply don’t include posts you want to exclude in your manual selection.

Taxonomies

Taxonomy filtering is disabled for manual selection: From /classes/class-admin.php:1448-1464:
Reason: You’re selecting specific posts, so filtering by category is redundant.

Offset

The offset option is hidden: From /classes/class-admin.php:1604-1621:
Reason: Pagination handles offsetting automatically based on selected posts.

Use Cases

Handpick your best work:

Mixed Content Showcase

Combine different post types:

Curated Category Override

Manually select specific items from a category:

Campaign Landing Page

Create a specific collection for a marketing campaign:

Query Implementation

The manual selection query is built in /classes/class-get-portfolio.php:1598-1607:

Final WP_Query

The resulting query looks like:

Post Selection Control

The find_posts_select_control callback provides dynamic post searching:

Pagination

Manual selection supports pagination normally:
Page 1 shows posts 1-6, Page 2 shows posts 7-12.

Sticky Posts

Sticky posts are ignored in manual selection:
This ensures your manual order isn’t disrupted by WordPress’s sticky post feature (which normally forces sticky posts to appear first).

Empty Selection

If no posts are selected:
The portfolio displays the “No items found” message (configured in Content Source settings).

Comparison with Other Sources

Manual Selection vs. Post Query

Manual Selection vs. Images

Best Practices

1. Use post__in Ordering

Always use post__in ordering for manual selections:

2. Limit Selection Size

For performance, keep manual selections reasonable:
  • Recommended: 10-50 posts
  • Maximum: 100-200 posts

3. Mix Post Types Strategically

When mixing post types, ensure they have compatible metadata:

4. Use for Special Collections

Manual selection is ideal for:
  • Featured work showcases
  • Landing page portfolios
  • “Best of” collections
  • Client-specific galleries
  • Event or campaign content

5. Document Your Selections

Add comments in your code or page documentation:

Troubleshooting

Posts Not Appearing

Issue: Selected posts don’t display Solutions:
  1. Check post status (must be published)
  2. Verify post IDs exist
  3. Ensure user has permission to view posts
  4. Check if posts have featured images (if required by item style)

Wrong Order

Issue: Posts display in wrong order Solution: Set order to post__in:

Mixed Post Types Not Working

Issue: Only one post type appears Solution: Ensure post_type is set to any (automatic with ids source).