# propertyhive/2.4.0/includes/bricks-builder-widgets/property-virtual-tours-link.php

Property Hive, version 2.4.0. 78 lines.

- Page: https://pluginprobe.com/plugins/propertyhive/2.4.0/code/includes/bricks-builder-widgets/property-virtual-tours-link.php
- Raw: https://pluginprobe.com/plugins/propertyhive/2.4.0/raw/includes/bricks-builder-widgets/property-virtual-tours-link.php
- Modified: 2026-09-16T09:29:48+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/propertyhive/2.4.0/code/includes/bricks-builder-widgets/property-virtual-tours-link.php#L10-L20`.

```php
<?php
/**
 * Bricks Builder Property Virtual Tours Link Widget.
 *
 * @since 1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

class Bricks_Builder_Property_Virtual_Tours_Link_Widget extends \Bricks\Element {

	// Element properties
	public $category     = 'propertyhive';
  	public $name         = 'bricks-builder-property-virtual-tours-link';
  	public $icon         = 'fas fa-video';

	public function get_label() 
	{
	    return esc_html__( 'Virtual Tours Link', 'propertyhive' );
	}

	public function set_control_groups() 
	{
		/*$this->control_groups['form'] = [
	      	'title' => esc_html__( 'Form', 'propertyhive' ),
	      	'tab' => 'content', // content / style
	    ];*/
	}

	public function set_controls() 
	{
		/*$this->controls['height'] = [
	      	'tab' => 'content',
	      	//'group' => 'settings',
	      	'label' => esc_html__( 'Height', 'propertyhive' ),
	      	'type' => 'number',
	      	'default' => 400
	    ];*/
	}

	public function render()
	{
		global $property;

		if ( !isset($property->id) ) 
		{
			return;
		}

		$virtual_tours = $property->get_virtual_tours();

        if ( empty( $virtual_tours ) )
        {
        	return;
        }

		$root_classes[] = $this->name;

	    // Add 'class' attribute to element root tag
	    $this->set_attribute( '_root', 'class', $root_classes );

		// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Bricks serializes registered attributes through its documented render_attributes() API.
		echo "<div {$this->render_attributes( '_root' )}>";

			foreach ($virtual_tours as $virtual_tour)
            {
				echo '<a href="' . esc_url($virtual_tour['url']) . '" target="_blank" rel="nofollow"';
				if ( strpos($virtual_tour['url'], 'yout') !== FALSE || strpos($virtual_tour['url'], 'vimeo') !== FALSE )
                {
                    echo ' data-fancybox=""';
                }
				echo '>' . esc_html($virtual_tour['label']) . '</a>';
			}

		echo '</div>';
	}
}

```
