- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
260 lines
7.0 KiB
PHP
Executable File
260 lines
7.0 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Class to control breadcrumb and its behaviour accross the buildwoofunnels
|
|
* @author buildwoofunnels
|
|
*/
|
|
if ( ! class_exists( 'BWF_Admin_Breadcrumbs' ) ) {
|
|
|
|
#[AllowDynamicProperties]
|
|
class BWF_Admin_Breadcrumbs {
|
|
|
|
private static $ins = null;
|
|
|
|
/**
|
|
* @var array nodes use to contain all the nodes
|
|
*/
|
|
public static $nodes = [];
|
|
|
|
/**
|
|
* @var array ref used to contain refs to pass to the urls
|
|
*/
|
|
public static $ref = [];
|
|
|
|
/**
|
|
* Insert a single node into the property
|
|
*
|
|
* @param $config [] of the node getting registered
|
|
*/
|
|
public static function register_node( $config ) {
|
|
self::$nodes[] = wp_parse_args( $config, [ 'class' => '', 'link' => '', 'text' => '' ] );
|
|
}
|
|
|
|
|
|
/**
|
|
* Insert a referral property so that we can populate the referral across all urls.
|
|
*
|
|
* @param $key
|
|
* @param $val
|
|
*/
|
|
public static function register_ref( $key, $val ) {
|
|
self::$ref[ $key ] = $val;
|
|
}
|
|
|
|
/**
|
|
* Render HTML for all the registered nodes
|
|
*/
|
|
public static function render() {
|
|
if ( empty( self::$nodes ) ) {
|
|
return '';
|
|
}
|
|
$last_item = end( self::$nodes );
|
|
?>
|
|
<ul>
|
|
<li class="<?php echo esc_attr( $last_item['class'] ) ?>">
|
|
<?php echo wp_kses_post( $last_item['text'] ); ?>
|
|
</li>
|
|
</ul>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* rearrange all the collected nodes and maybe print them
|
|
*
|
|
* @param false $return_nodes should just return nodes or print
|
|
*
|
|
* @return array|false
|
|
*/
|
|
public static function render_top_bar( $return_nodes = false ) {
|
|
if ( empty( self::$nodes ) ) {
|
|
return false;
|
|
}
|
|
|
|
if ( ! is_array( self::$nodes ) || count( self::$nodes ) == 0 ) {
|
|
return false;
|
|
}
|
|
|
|
self::$nodes = array_filter( self::$nodes, function ( $v ) {
|
|
if ( isset( $v['text'] ) && ! empty( $v['text'] ) ) {
|
|
return true;
|
|
}
|
|
} );
|
|
|
|
if ( ! is_array( self::$nodes ) || count( self::$nodes ) == 0 ) {
|
|
return false;
|
|
}
|
|
|
|
if ( true === $return_nodes ) {
|
|
return self::$nodes;
|
|
}
|
|
|
|
$count = count( self::$nodes );
|
|
$h = 0;
|
|
foreach ( self::$nodes as $menu ) {
|
|
if ( ! isset( $menu['text'] ) || empty( $menu['text'] ) ) {
|
|
continue;
|
|
}
|
|
$h ++;
|
|
|
|
echo '<span>';
|
|
if ( $count !== $h && isset( $menu['link'] ) && ! empty( $menu['link'] ) ) {
|
|
echo '<a href="' . esc_url($menu['link']) . '">' . $menu['text'] . '</a>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
|
} else {
|
|
echo $menu['text']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
|
}
|
|
echo '</span>';
|
|
}
|
|
|
|
return self::$nodes;
|
|
}
|
|
|
|
|
|
/**
|
|
* Add the registered referral to the url passed
|
|
* ref should contain the query param as key and value as value
|
|
*
|
|
* @param $url URL to add refs to
|
|
*
|
|
* @return string modified url
|
|
*/
|
|
public static function maybe_add_refs( $url ) {
|
|
if ( empty( self::$ref ) ) {
|
|
return $url;
|
|
}
|
|
|
|
return add_query_arg( self::$ref, $url );
|
|
}
|
|
|
|
|
|
public static function render_sticky_bar() {
|
|
?>
|
|
<style>
|
|
/* Sticky Bar */
|
|
.bwf-header-bar {
|
|
background: #fff;
|
|
box-sizing: border-box;
|
|
border-bottom: 1px solid #fff;
|
|
padding: 0 0 0 20px;
|
|
min-height: 56px;
|
|
position: fixed;
|
|
width: 100%;
|
|
top: 32px;
|
|
z-index: 1001;
|
|
display: flex;
|
|
align-items: center;
|
|
box-shadow: 0 0px 10px 0 #c8c8c8
|
|
}
|
|
|
|
.bwf-header-bar > img {
|
|
max-width: 24px
|
|
}
|
|
|
|
.bwf-bar-navigation {
|
|
font-size: 16px;
|
|
padding-left: 15px;
|
|
display: flex
|
|
}
|
|
|
|
.bwf-bar-navigation > span {
|
|
padding-right: 25px;
|
|
position: relative
|
|
}
|
|
|
|
.bwf-bar-navigation > span a {
|
|
text-decoration: none;
|
|
font-weight: normal
|
|
}
|
|
|
|
.bwf-bar-navigation > span:after {
|
|
content: "\f345";
|
|
font-family: 'dashicons';
|
|
font-size: 15px;
|
|
position: absolute;
|
|
right: 4px;
|
|
top: 1px
|
|
}
|
|
|
|
.bwf-bar-navigation > span:last-child:after {
|
|
content: ""
|
|
}
|
|
|
|
.bwf-bar-quick-links {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
position: fixed;
|
|
right: 0;
|
|
top: 32px;
|
|
height: 56px
|
|
}
|
|
|
|
.bwf-bar-quick-links a.bwf-bar-link {
|
|
display: block;
|
|
font-size: 13px;
|
|
height: 56px;
|
|
text-decoration: none;
|
|
text-align: center;
|
|
padding: 0 10px;
|
|
min-width: 70px;
|
|
transition: all 0.4s ease;
|
|
-webkit-transition: all 0.4s ease;
|
|
box-sizing: border-box
|
|
}
|
|
|
|
.bwf-bar-quick-links a.bwf-bar-link:hover {
|
|
background: #f0f0f0
|
|
}
|
|
|
|
.bwf-bar-quick-links a * {
|
|
display: block;
|
|
margin: 0 auto;
|
|
padding: 0;
|
|
float: none;
|
|
color: #757575
|
|
}
|
|
|
|
.bwf-bar-quick-links a i {
|
|
font-size: 20px;
|
|
color: #757575;
|
|
margin-top: 8px
|
|
}
|
|
|
|
.wrap.bwf-funnel-common {
|
|
padding: 60px 0 0 20px;
|
|
margin: 0 20px 0 0
|
|
}
|
|
|
|
.bwf-header-bar .bwf-breadcrub-svg-icon {
|
|
max-width: 35px;
|
|
}
|
|
</style>
|
|
<div class="bwf-header-bar">
|
|
<img class="bwf-breadcrub-svg-icon" src="<?php echo esc_url( plugin_dir_url( WooFunnel_Loader::$ultimate_path ) . 'woofunnels/assets/img/bwf-icon-white-bg.svg' ); ?>"/>
|
|
<div class="bwf-bar-navigation">
|
|
<?php
|
|
global $submenu;
|
|
if ( array_key_exists( 'bwf_dashboard', $submenu ) ) {
|
|
echo '<span><a href="' . esc_url(admin_url( 'admin.php?page=bwf_dashboard' )) . '">FunnelKit</a></span> ';
|
|
}
|
|
if ( method_exists( 'BWF_Admin_Breadcrumbs', 'render_top_bar' ) ) {
|
|
BWF_Admin_Breadcrumbs::render_top_bar();
|
|
}
|
|
?>
|
|
</div>
|
|
<div class="bwf-bar-quick-links">
|
|
<a class="bwf-bar-link" href="https://funnelkit.com/documentation/" target="_blank">
|
|
<i class="dashicons dashicons-format-chat"></i>
|
|
<span>Docs</span>
|
|
</a>
|
|
<a class="bwf-bar-link" href="https://funnelkit.com/support/" target="_blank">
|
|
<i class="dashicons dashicons-businessman"></i>
|
|
<span>Support</span>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
|
|
}
|
|
}
|