Skip to content

Instantly share code, notes, and snippets.

View rayrutjes's full-sized avatar
🎸

Raymond Rutjes rayrutjes

🎸
View GitHub Profile
@rayrutjes
rayrutjes / algolia-woocommerce-instantsearch.php
Created January 31, 2018 19:01
Display WooCommerce InstantSearch on home page Algolia
<?php
// Inject instantsearch.js on every page regardless of backend config.
add_filter( 'algolia_wc_should_display_instantsearch', '__return_true' );
// This will make sure the search is displayed on load. Oterwise it waits for the query to change to be displayed.
add_filter( 'algolia_config', function( array $config ) {
$config['woocommerce']['replace_page'] = true;
@rayrutjes
rayrutjes / algolia-woocommerce-filter-facets.php
Last active February 14, 2018 08:04
Filter displayed facets in Algolia plugin for WooCommerce
<?php
add_filter( 'algolia_wc_attributes_for_faceting', function( $attributes ) {
$only_ids = array(
15, // Main Style
13, // Main Color
49, // Sizes
23, // Brand
4, // Collection
22, // Material
@rayrutjes
rayrutjes / algolia-custom-post-types.php
Created January 31, 2018 09:36
Add custom post type to dedicated WordPress search results page for Algolia plugin for WordPress
<?php
// See: https://github.com/algolia/algoliasearch-wordpress/blob/master/includes/class-algolia-plugin.php#L181
// To be added to the functions.php of your active theme for example.
add_filter( 'algolia_searchable_post_types', function( array $post_types ) {
$post_types[] = 'my_custom_post_type';
return $post_types;
} );
@rayrutjes
rayrutjes / display-instantsearch-all-pages.php
Created January 26, 2018 09:03
Display instantsearch on all pages in Algolia WooCommerce plugin
<?php
add_filter( 'algolia_wc_should_display_instantsearch', function( $should_display ) {
// If configuration already considers it should be shawn, show it.
if ( $should_display ) {
return true;
}
// Detect the current page and only return true when you want instantsearch.js to be injected.
if ( is_shop() ) {
@rayrutjes
rayrutjes / custom-avatar.php
Created January 15, 2018 11:30
Custom avatar in Algolia plugin for WordPress
<?php
/**
* Plugin Name: Customize data pushed to Algolia.
*/
/**
* @param int $user_id
* @param string $fallback_avatar_url
*
* @return string
@rayrutjes
rayrutjes / customize-algolia-autocomplete-labels.php
Created January 3, 2018 14:17
Algolia WordPress customize autocomplete header labels for use with translation plugin
<?php
add_filter( 'algolia_autocomplete_config', function ( $config ) {
// echo '<pre>';
// var_dump( $config );
// echo '</pre>';
foreach ( $config as &$index ) {
// Adjust and adapt according to your needs.
if ( $index['index_id'] === 'posts_post' ) {
@rayrutjes
rayrutjes / autocomplete.php
Created November 27, 2017 15:22
Zendesk <> Algolia plugin for WordPress autocomplete integration
<!-- ... -->
<script type="text/html" id="tmpl-autocomplete-zendesk-suggestion">
<a class="suggestion-link" href="https://algolia-test.zendesk.com/hc/{{ data.locale.locale }}/articles/{{ data.id }}">
<div class="suggestion-post-attributes">
<span class="suggestion-post-title">{{{ data._highlightResult.title.value }}}</span>
<# if ( data._snippetResult['body_safe'] ) { #>
<span class="suggestion-post-content">{{{ data._snippetResult['body_safe'].value }}}</span>
<# } #>
</div>
</a>
@rayrutjes
rayrutjes / functions.php
Created November 22, 2017 11:35
WordPress add Geoloc info to custom post type "profiles"
<?php
function add_geoloc_to_profiles($attributes) {
$attributes['_geoloc']['lat'] = 0;
$attributes['_geoloc']['lng'] = 0;
return $attributes;
}
add_filter('algolia_post_profiles_shared_attributes', 'add_geoloc_to_profiles');
@rayrutjes
rayrutjes / delete-by.js
Created November 10, 2017 19:21
Javascript new deleteBy
// using no query parameters will clear the index
index.deleteBy({
// any browse-compatible search parameters
}, function(err) {
if (!err) {
console.log('success');
}
});
@rayrutjes
rayrutjes / re-index-wordpress-plugin.php
Created September 28, 2017 15:35
Programmatic re-indexing index WordPress Algolia plugin
<?php
$algolia = Algolia_Plugin::get_instance();
$index = $algolia->get_index('posts_product');
$total_pages = $index->get_re_index_max_num_pages();
if ( $total_pages === 0 ) {
$index->re_index( 1 );
return;
}
$page = 1;