PHP code example of danlapteacru / facetwp-builder

1. Go to this page and download the library: Download danlapteacru/facetwp-builder library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

danlapteacru / facetwp-builder example snippets


$builder->addAutocomplete('autocomplete', [
    'label' => 'Autocomplete',
    'source' => 'post_title',
    'placeholder' => 'Placeholder',
]);

$builder->addCheckbox('checkbox', [
    'label' => 'Categories',
    'source' => 'tax/category',
    'parent_term' => '',
    'hierarchical' => 'no',
    'show_expanded' => 'no',
    'ghosts' => 'no',
    'preserve_ghosts' => 'no',
    'operator' => 'and',
    'orderby' => 'count',
    'count' => '10',
    'soft_limit' => '5',
]);

$builder->addDateRange('date_range', [
    'label' => 'Date Range',
    'source' => 'post_date',
    'compare_type' => '',
    'fields' => 'both',
    'format' => '',
]);

$builder->addDropdown('dropdown', [
    'label' => 'Dropdown',
    'source' => 'tax/category',
    'label_any' => 'Any',
    'parent_term' => '',
    'modifier_type' => 'off',
    'modifier_values' => '',
    'hierarchical' => 'no',
    'orderby' => 'count',
    'count' => '10',
]);

$builder->addFselect('fselect', [
    'label' => 'fSelect',
    'source' => 'tax/category',
    'label_any' => 'Any',
    'parent_term' => '',
    'modifier_type' => 'off',
    'modifier_values' => '',
    'hierarchical' => 'no',
    'multiple' => 'no',
    'ghosts' => 'no',
    'preserve_ghosts' => 'no',
    'operator' => 'and',
    'orderby' => 'count',
    'count' => '10',
]);

$builder->addHierarchy('hierarchy', [
    'label' => 'Hierarchy',
    'source' => 'tax/category',
    'label_any' => 'Any',
    'modifier_type' => 'off',
    'modifier_values' => '',
    'orderby' => 'count',
    'soft_limit' => '5',
]);

$builder->addNumberRange('number_range', [
    'label' => 'Number Range',
    'source' => 'post_meta/price',
    'compare_type' => '',
    'fields' => 'both',
]);

$builder->addPager('pager', [
    'label' => 'Pager',
    'pager_type' => 'numbers',
    'inner_size' => '2',
    'dots_label' => '…',
    'prev_label' => '« Prev',
    'next_label' => 'Next »',
    'count_text_plural' => '[lower] - [upper] of [total] results',
    'count_text_singular' => '1 result',
    'count_text_none' => 'No results',
    'load_more_text' => 'Load more',
    'loading_text' => 'Loading...',
    'default_label' => 'Per page',
    'per_page_options' => '10, 25, 50, 100',
]);

$builder->addProximity('proximity', [
    'label' => 'Proximity',
    'source' => 'post_meta/location',
    'unit' => 'mi',
    'radius_ui' => 'dropdown',
    'radius_options' => '10, 25, 50, 100, 250',
    'radius_min' => '1',
    'radius_max' => '50',
    'radius_default' => '25',
    'placeholder' => '',
]);

$builder->addRadio('radio', [
    'label' => 'Radio',
    'source' => 'tax/category',
    'label_any' => 'Any',
    'parent_term' => '',
    'modifier_type' => 'off',
    'modifier_values' => '',
    'ghosts' => 'no',
    'preserve_ghosts' => 'no',
    'orderby' => 'count',
    'count' => '10',
]);

$builder->addReset('reset', [
    'label' => 'Reset',
    'reset_ui' => 'button',
    'reset_text' => 'Reset',
    'reset_mode' => 'off',
    'auto_hide' => 'no',
    'reset_facets' => [],
]);

$builder->addSearch('search', [
    'label' => 'Search',
    'search_engine' => '',
    'placeholder' => '',
    'auto_refresh' => 'no',
]);

$builder->addSlider('slider', [
    'label' => 'Slider',
    'source' => 'post_meta/price',
    'compare_type' => '',
    'prefix' => '',
    'suffix' => '',
    'reset_text' => 'Reset',
    'format' => '0,0',
    'step' => '1',
]);

$builder->addSort('sort', [
    'label' => 'Sort',
    'default_label' => 'Sort by',
    'sort_options' => [
        [
            'label' => 'Title (A-Z)',
            'name' => 'title_asc',
            'orderby' => [
                [
                    'key' => 'title',
                    'order' => 'ASC',
                    'type' => 'CHAR',
                ],
            ],
        ],
    ],
]);

$builder->addRating('star_rating', [
    'label' => 'Star Rating',
    'source' => 'post_meta/rating',
]);

$builder->addUserSelections('user_selections', [
    'label' => 'User Selections',
]);

setName(string $name)
setLabel(string $label)
setSource(string $source)
setOperator(string $operator)
setOrderby(string $orderby)
setCount(int $count)
setHierarchical(bool $hierarchical)
setShowExpanded(bool $show_expanded)
setGhosts(bool $ghosts)
setPreserveGhosts(bool $preserve_ghosts)
setSoftLimit(int $soft_limit)
setLabelAny(string $label_any)
setMultiple(bool $multiple)
setSearchEngine(string $search_engine)
setPlaceholder(string $placeholder)
setAutoRefresh(bool $auto_refresh)
setStep(int $step)
setPrefix(string $prefix)
setSuffix(string $suffix)
setCompareType(string $compare_type)
setFormat(string $format)
setSourceOther(string $source_other)

// Add all facets from another FacetsBuilder or a plain array
$builder->addFacets(array|FacetsBuilder $facets): static

// Retrieve facets
$builder->getFacets(): FacetBuilder[]
$builder->getFacet(string $name): FacetBuilder   // throws FacetNotFoundException

// Check existence
$builder->facetExists(string $name): bool

// Register with FacetWP (default)
$builder->build();

// Only build the array, skip WP hook registration
$builder->build(addArrayToWpHook: false);

// Register a pre-built array manually
FacetsBuilder::addFacetWpHook(array $facets): void

$builder->addTemplate('course', [
    'label' => 'Course',
    'query_array' => [
        'post_type' => 'course',
        'post_status' => 'publish',
        'posts_per_page' => 10,
        'orderby' => 'title',
        'order' => 'ASC',
    ],
    'modes' => [
        'display' => 'visual',
        'query' => 'advanced',
    ],
]);

setName(string $name)
setLabel(string $label)
setQuery(array $query)       // converts array to PHP string automatically
setQueryObj(array $query)
setLayout(array $layout)
setModes(array $modes)
setPostType(string $postType)       // throws Exception if post type not found
setPostsPerPage(int $postsPerPage)

$builder
    ->addTemplate('course')
    ->setLabel('Course')
    ->setQuery([
        'post_type' => 'course',
        'post_status' => 'publish',
        'posts_per_page' => 10,
        'orderby' => 'title',
        'order' => 'ASC',
    ])
    ->setModes([
        'display' => 'visual',
        'query' => 'advanced',
    ]);
$builder->build();

$builder
    ->addTemplate('course')
    ->setPostType('course')
    ->setPostsPerPage(9);
$builder->build();

[
    'display' => 'visual',
    'query' => 'advanced',
]

// Add all templates from another TemplatesBuilder or a plain array
$builder->addTemplates(array|TemplatesBuilder $templates): static

// Retrieve templates
$builder->getTemplates(): TemplateBuilder[]
$builder->getTemplate(string $name): TemplateBuilder   // throws FacetNotFoundException

// Check existence
$builder->templateExists(string $name): bool

// Register with FacetWP (default)
$builder->build();

// Only build the array, skip WP hook registration
$builder->build(addTemplatesToWpHook: false);

// Register a pre-built array manually
TemplatesBuilder::addFacetWpHook(array $templates): void

$builder->addFacet('my_facet', 'checkbox', [
    'label' => 'My Facet Label',
]);

add_filter('danlapteacru/facetwp-builder/allowed_facet_types', function (array $types): array {
    $types[] = 'my_custom_type';
    return $types;
});

use DanLapteacru\FacetWpBuilder\FacetsBuilder;

$builder = new FacetsBuilder();
$builder
    ->addSearch('search')
    ->setLabel('Search')
    ->setPlaceholder('Search placeholder')
    ->setAutoRefresh(true);
$builder->build();

use DanLapteacru\FacetWpBuilder\FacetBuilder;
use DanLapteacru\FacetWpBuilder\Facets\Checkbox;
use DanLapteacru\FacetWpBuilder\FacetsBuilder;

$facet = new FacetBuilder('my_facet', Checkbox::TYPE);
$facet
    ->setLabel('Categories')
    ->setSource('tax/category');
$facetArray = $facet->build();

FacetsBuilder::addFacetWpHook($facetArray);

use DanLapteacru\FacetWpBuilder\TemplatesBuilder;

$builder = new TemplatesBuilder();
$builder
    ->addTemplate('course')
    ->setLabel('Courses')
    ->setQuery([
        'post_type' => 'course',
        'post_status' => 'publish',
        'posts_per_page' => 8,
        'orderby' => 'title',
        'order' => 'ASC',
    ]);
$builder->build();