Skip to content

Instantly share code, notes, and snippets.

@g-maclean
g-maclean / snippet.php
Last active December 1, 2025 00:14
Property Hive - add a bulk option for removing property media
//adds a new option to the wp bulk options dropdown
// Add a custom bulk action to the dropdown
function add_bulk_delete_media_action($bulk_actions) {
$bulk_actions['delete_attached_media'] = __('Delete Attached Media', 'text-domain');
return $bulk_actions;
}
add_filter('bulk_actions-edit-property', 'add_bulk_delete_media_action');
// Handle the custom bulk action
@g-maclean
g-maclean / snippet.php
Created November 25, 2025 16:48
Property Hive - Sort by Title
// Change default order (optional)
add_filter('propertyhive_default_search_results_orderby', 'change_default_order');
function change_default_order( $orderby )
{
return 'title_asc'; // or return ''; if you want PropertyHive's default
}
// Add new sort options to dropdown
add_filter( 'propertyhive_results_orderby', 'ph_add_custom_title_sorting' );
function ph_add_custom_title_sorting($options)
@g-maclean
g-maclean / snippet.php
Created November 20, 2025 13:34
Property Hive - Reapit - use extra address field for location
add_action( "propertyhive_property_imported_reapit_json", 'assign_location_from_extra_field', 10, 2 );
function assign_location_from_extra_field( $post_id, $property ) {
$location_set = false;
if ( isset( $property['address']['line3'] ) && trim( $property['address']['line3'] ) != '' ) {
$reapit_location = trim( $property['address']['line3'] );
$term = term_exists( $reapit_location, 'location' );
if ( $term !== 0 && $term !== null && isset( $term['term_id'] ) ) {
$location_set = true;
wp_set_object_terms( $post_id, array( (int)$term['term_id'] ), 'location' );
}
@g-maclean
g-maclean / snippet.php
Last active November 18, 2025 05:53
Property Hive - Elementor - Similar Properties Query ID
add_action( 'elementor/query/similar_properties_query', function( $query ) {
global $property;
//
// STATIC DEFAULTS (taken from the shortcode)
// https://docs.wp-property-hive.com/article/312-shortcodes-similarproperties
//
$atts = array(
//'per_page' => 2, //unused
@g-maclean
g-maclean / snippet.php
Last active November 4, 2025 13:51
Property Hive - shortcode to output address without number
function ph_address_no_number_shortcode( $atts ) {
global $property;
// Do nothing if $property object isn't available
if ( ! isset( $property ) || ! is_object( $property ) ) {
return '';
}
// Shortcode attributes: separator, optional HTML tag, optional class
$atts = shortcode_atts( array(
@g-maclean
g-maclean / snippet.php
Created October 1, 2025 06:07
PropertyHive - Agent Insight - abbreviated floors / floorunit
add_filter( 'propertyhive_import_agentsinsight_units_description_table_data_columns', 'custom_data_columns' );
function custom_data_columns( $columns )
{
if ( isset($columns['name']) )
{
// Map of codes to labels
$floor_map = array(
'lg' => 'Lower Ground',
'g' => 'Ground',
'm' => 'Mezzanine',
@g-maclean
g-maclean / snippet.php
Created September 16, 2025 15:28
Property Hive - Shortcode to output council tax band
// [council_tax_band]
add_shortcode('council_tax_band', 'council_tax_band_shortcode');
function council_tax_band_shortcode($atts) {
global $property;
$council_tax_band = $property->council_tax_band;
if ( !empty($council_tax_band) ) {
return '<div class="council-tax-band">Council Tax Band: ' . esc_html($council_tax_band) . '</div>';
} else {
@g-maclean
g-maclean / snippet.php
Created September 3, 2025 14:16
Property Hive - Kyero - import plot size
add_action( "propertyhive_property_imported_kyero_xml", 'import_plot_size', 10, 2 );
function import_plot_size($post_id, $property)
{
if ( isset($property->surface_area) && isset($property->surface_area->plot) && !empty($property->surface_area->plot) ) {
update_post_meta( $post_id, '_plot_size', $property->surface_area->plot );
}
}
@g-maclean
g-maclean / snippet.php
Last active September 8, 2025 06:56
Property Hive - add view shortlist button to results page
add_action('propertyhive_before_search_results_loop', 'add_view_shortlist_button', 50);
function add_view_shortlist_button() {
if ( isset($_GET['shortlisted']) && $_GET['shortlisted'] == '1' ) {
echo '<div class="view-shortlist-container" style="clear: both;">
<a href="/search/" class="button view-shortlist-button">Back to Search</a>
</div>';
}
echo '<div class="view-shortlist-container" style="clear: both;">
<a href="/search/?shortlisted=1" class="button view-shortlist-button">View Shortlist</a>
</div>';
@g-maclean
g-maclean / snippet.php
Last active September 29, 2025 05:49
Property Hive - Alto - Assign additional field let type for student properties
add_action( "propertyhive_property_imported_vebra_api_xml", 'assign_student_let_type', 10, 2 );
function assign_student_let_type($post_id, $property)
{
$is_student = false;
// Check conditions
if ( isset($property->rm_let_type_id) && strtolower((string)$property->rm_let_type_id) == '3' ) {
$is_student = true;
}