Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
jet-engine
/
includes
/
components
/
listings
/
render
:
dynamic-link.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * Elementor views manager */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } if ( ! class_exists( 'Jet_Engine_Render_Dynamic_Link' ) ) { class Jet_Engine_Render_Dynamic_Link extends Jet_Engine_Render_Base { private $show_field = true; private $is_delete_link = false; public function get_name() { return 'jet-listing-dynamic-link'; } /** * Set value for show_field trigger */ public function set_field_visibility( $show = true ) { $this->show_field = $show; } /** * Get delete post URL */ public function get_delete_url( $settings ) { $redirect = ! empty( $settings['delete_link_redirect'] ) ? esc_url( $settings['delete_link_redirect'] ) : home_url( '/' ); $type = ! empty( $settings['delete_link_type'] ) ? $settings['delete_link_type'] : 'trash'; return jet_engine()->listings->delete_post->get_delete_url( apply_filters( 'jet-engine/listings/dynamic-link/delete-url-args', array( 'type' => $type, 'redirect' => $redirect, ) ) ); } /** * Render link tag * * @param [type] $settings [description] * @param [type] $base_class [description] * @return [type] [description] */ public function render_link( $settings, $base_class ) { $format = '<a href="%1$s" class="%2$s__link"%5$s%6$s%7$s>%3$s%4$s</a>'; $source = ! empty( $settings['dynamic_link_source'] ) ? $settings['dynamic_link_source'] : '_permalink'; $custom = ! empty( $settings['dynamic_link_source_custom'] ) ? $settings['dynamic_link_source_custom'] : ''; $pre_render_link = apply_filters( 'jet-engine/listings/dynamic-link/pre-render-link', false, $settings, $base_class, $this ); if ( $pre_render_link ) { echo $pre_render_link; return; } $url = apply_filters( 'jet-engine/listings/dynamic-link/custom-url', false, $settings ); $object_context = ! empty( $settings['object_context'] ) ? $settings['object_context'] : false; if ( ! $url ) { if ( $custom ) { $url = jet_engine()->listings->data->get_meta( $custom, jet_engine()->listings->data->get_object_by_context( $object_context ) ); } elseif ( '_permalink' === $source ) { $url = jet_engine()->listings->data->get_current_object_permalink( jet_engine()->listings->data->get_object_by_context( $object_context ) ); } elseif ( 'delete_post_link' === $source ) { $this->is_delete_link = true; $url = $this->get_delete_url( $settings ); } elseif ( 'options_page' === $source ) { $option = ! empty( $settings['dynamic_link_option'] ) ? $settings['dynamic_link_option'] : false; $url = jet_engine()->listings->data->get_option( $option ); } elseif ( $source ) { $url = jet_engine()->listings->data->get_meta( $source, jet_engine()->listings->data->get_object_by_context( $object_context ) ); } } if ( is_array( $url ) ) { $url = $url[0]; $url = get_permalink( $url[0] ); } $label = $this->get_link_label( $settings, $base_class, $url ); $icon = $this->get_link_icon( $settings, $base_class ); if ( is_wp_error( $url ) ) { echo $url->get_error_message(); return; } $open_in_new = isset( $settings['open_in_new'] ) ? $settings['open_in_new'] : ''; $rel_attr = isset( $settings['rel_attr'] ) ? esc_attr( $settings['rel_attr'] ) : ''; $rel = ''; $target = ''; if ( $rel_attr ) { $rel = sprintf( ' rel="%s"', $rel_attr ); } if ( $open_in_new ) { $target = ' target="_blank"'; } if ( ! empty( $settings['hide_if_empty'] ) && empty( $url ) ) { $this->show_field = false; return; } if ( is_object( $url ) && $url instanceof WP_Post ) { $url = get_permalink( $url->ID ); } $url = $this->maybe_add_query_args( $url, $settings ); if ( ! empty( $settings['url_prefix'] ) ) { $url = esc_attr( $settings['url_prefix'] ) . $url; } $custom_attrs = ''; if ( $this->is_delete_link ) { $message = ! empty( $settings['delete_link_dialog'] ) ? $settings['delete_link_dialog'] : ''; $custom_attrs .= ' data-delete-link="1"'; $custom_attrs .= ' data-delete-message="' . $message . '"'; } printf( $format, $url, $base_class, $icon, $label, $rel, $target, $custom_attrs ); } public function get_link_label( $settings, $base_class, $url ) { $label = ! empty( $settings['link_label'] ) ? $settings['link_label'] : false; if ( $label ) { $label = jet_engine()->listings->macros->do_macros( $label, $url ); $label = sprintf( '<span class="%1$s__label">%2$s</span>', $base_class, $label ); } return $label; } public function get_link_icon( $settings, $base_class ) { $icon = ! empty( $settings['link_icon'] ) ? $settings['link_icon'] : false; $new_icon = ! empty( $settings['selected_link_icon'] ) ? $settings['selected_link_icon'] : false; $new_icon_html = \Jet_Engine_Tools::render_icon( $new_icon, $base_class . '__icon' ); if ( $new_icon_html ) { $icon = $new_icon_html; } elseif ( $icon ) { $icon = sprintf( '<i class="%1$s__icon %2$s"></i>', $base_class, $icon ); } return $icon; } /** * Maybe add query arguments to URL string * * @return [type] [description] */ public function maybe_add_query_args( $url = null, $settings = array() ) { return Jet_Engine_Tools::add_query_args_by_settings( $url, $settings ); } public function render() { $base_class = $this->get_name(); $settings = $this->get_settings(); $tag = isset( $settings['link_wrapper_tag'] ) ? $settings['link_wrapper_tag'] : 'div'; $tag = Jet_Engine_Tools::sanitize_html_tag( $tag ); ob_start(); $classes = array( 'jet-listing', $base_class, ); if ( ! empty( $settings['className'] ) ) { $classes[] = esc_attr( $settings['className'] ); } printf( '<%1$s class="%2$s">', $tag, implode( ' ', $classes ) ); do_action( 'jet-engine/listing/dynamic-link/before-field', $this ); $this->render_link( $settings, $base_class ); do_action( 'jet-engine/listing/dynamic-link/after-field', $this ); printf( '</%s>', $tag ); $content = ob_get_clean(); if ( $this->show_field ) { echo $content; } } } }