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();