How to change the results URL to something else?
What is this, and where do I put this custom code?
Replacing with a static URL
add_filter( 'asp_results', function ( $results, $search_id, $is_ajax, $args ) {
// Replaces each result URL with this
$replace_with = 'https://google.com';
// --- DO NOT CHANGE ANYTHING BELOW ---
foreach ($results as $k=>$r) {
// Ajax results link
if ( isset($r->link) ) {
$r->link = $replace_with;
}
}
return $results;
}, 10, 4 );Replacing multiple different URLs within the results
Enter the values to the $replace variable on line 7. On each line, the left side is the value to replace, with the value on the right side.
add_filter( 'asp_results', function ( $results, $search_id, $is_ajax, $args ) {
// Array of original -> replacement links
$replace = array(
'websiteurl1.com' => 'google.com',
'websiteurl2.com' => 'wikipedia.com',
'websiteurl3.com' => 'bing.com'
);
// --- DO NOT CHANGE ANYTHING BELOW ---
foreach ($results as $k=>&$r) {
$link = $r->link ?? (isset($r->asp_guid) ? $r->asp_guid : '');
if ( $link == '' )
continue;
$link = str_replace(array_keys($replace), array_values($replace), $link);
// Ajax results link
if ( isset($r->link) ) {
$r->link = $link;
}
}
return $results;
}, 10, 4 );Parsing the url from post meta
What is this, and where do I put this custom code?
add_filter( 'asp_results', function ( $results, $search_id, $is_ajax, $args ) {
// Change this variable to whatever meta key you are using
$meta_key = 'custom_url';
// --- DO NOT CHANGE ANYTHING BELOW ---
foreach ($results as $k=>$r) {
if ( function_exists('get_field') ) {
$new_url = get_field( $meta_key, $r->id, true ); // ACF support
} else {
$new_url = get_post_meta( $r->id, $meta_key, true );
}
// Change only, if the meta is specified
if ( !empty($new_url) ) {
// Ajax results link
if ( isset($r->link) ) {
$r->link = $new_url;
}
}
}
return $results;
}, 10, 4 );Last updated