12% off of LTD using this coupon: TWELVEPERCENTOFF. Promo ends on 2 Dec midnight UTC.
Published on May 28, 2019

Templates and Pages Quick Edit Toolbar Menus in Oxygen

Sridhar Katakam

Update: You might want to use WPDevDesign Oxygen Navigator plugin instead.


This tutorial provides the steps to add “Templates” and “Pages” menu items in WordPress toolbar showing a list of Templates and Pages that can be edited directly with Oxygen editor thereby saving at least 3 or 4 clicks needed to get to them whether you are in the WordPress admin or in the front end.

Step 1

Install and activate Code Snippets plugin.

Go to Snippets > Add New.

Title: Templates and Pages Quick Edit Toolbar Menus in Oxygen

Code:

<?php

add_action( 'admin_bar_menu', 'custom_edit_oxygen_templates', 999 );
/**
 * Adds Templates menu item in the WordPress toolbar.
 *
 * @param object $wp_admin_bar WP_Admin_Bar instance, passed by reference
 */
function custom_edit_oxygen_templates( $wp_admin_bar ) {

	// if ( ! is_super_admin()
	// 	 || ! is_object( $wp_admin_bar )
	// 	 || ! function_exists( 'is_admin_bar_showing' )
	// 	 || ! is_admin_bar_showing() ) {
	// 	return;
	// }
	if ( ! function_exists( 'oxygen_vsb_current_user_can_access' ) || ! oxygen_vsb_current_user_can_access() ) {
		return;
	}

	// oxygen icon.
	$iconurl = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIzODFweCIgaGVpZ2h0PSIzODVweCIgdmlld0JveD0iMCAwIDM4MSAzODUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+VW50aXRsZWQgMzwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz4gICAgICAgIDxwb2x5Z29uIGlkPSJwYXRoLTEiIHBvaW50cz0iMC4wNiAzODQuOTQgMzgwLjgwNSAzODQuOTQgMzgwLjgwNSAwLjYyOCAwLjA2IDAuNjI4Ij48L3BvbHlnb24+ICAgIDwvZGVmcz4gICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCI+ICAgICAgICA8ZyBpZD0iT3h5Z2VuLUljb24tQ01ZSyI+ICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0iI2ZmZiI+ICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+ICAgICAgICAgICAgPC9tYXNrPiAgICAgICAgICAgIDxnIGlkPSJDbGlwLTIiPjwvZz4gICAgICAgICAgICA8cGF0aCBkPSJNMjk3LjUwOCwzNDkuNzQ4IEMyNzUuNDQzLDM0OS43NDggMjU3LjU1NiwzMzEuODYgMjU3LjU1NiwzMDkuNzk2IEMyNTcuNTU2LDI4Ny43MzEgMjc1LjQ0MywyNjkuODQ0IDI5Ny41MDgsMjY5Ljg0NCBDMzE5LjU3MywyNjkuODQ0IDMzNy40NiwyODcuNzMxIDMzNy40NiwzMDkuNzk2IEMzMzcuNDYsMzMxLjg2IDMxOS41NzMsMzQ5Ljc0OCAyOTcuNTA4LDM0OS43NDggTDI5Ny41MDgsMzQ5Ljc0OCBaIE0yMjIuMzA0LDMwOS43OTYgQzIyMi4zMDQsMzEyLjAzOSAyMjIuNDQ3LDMxNC4yNDcgMjIyLjYzOSwzMTYuNDQxIEMyMTIuMzMsMzE5LjA5MiAyMDEuNTI4LDMyMC41MDUgMTkwLjQwMywzMjAuNTA1IEMxMTkuMDEsMzIwLjUwNSA2MC45MjksMjYyLjQyMyA2MC45MjksMTkxLjAzMSBDNjAuOTI5LDExOS42MzggMTE5LjAxLDYxLjU1NyAxOTAuNDAzLDYxLjU1NyBDMjYxLjc5NCw2MS41NTcgMzE5Ljg3NywxMTkuNjM4IDMxOS44NzcsMTkxLjAzMSBDMzE5Ljg3NywyMDYuODMzIDMxNy4wMiwyMjEuOTc4IDMxMS44MTUsMjM1Ljk5IEMzMDcuMTc5LDIzNS4wOTcgMzAyLjQwNCwyMzQuNTkyIDI5Ny41MDgsMjM0LjU5MiBDMjU1Ljk3NCwyMzQuNTkyIDIyMi4zMDQsMjY4LjI2MiAyMjIuMzA0LDMwOS43OTYgTDIyMi4zMDQsMzA5Ljc5NiBaIE0zODAuODA1LDE5MS4wMzEgQzM4MC44MDUsODYuMDQyIDI5NS4zOTIsMC42MjggMTkwLjQwMywwLjYyOCBDODUuNDE0LDAuNjI4IDAsODYuMDQyIDAsMTkxLjAzMSBDMCwyOTYuMDIgODUuNDE0LDM4MS40MzMgMTkwLjQwMywzODEuNDMzIEMyMTIuNDk4LDM4MS40MzMgMjMzLjcwOCwzNzcuNjA5IDI1My40NTYsMzcwLjY1NyBDMjY1Ljg0NSwzNzkuNjQxIDI4MS4wMzQsMzg1IDI5Ny41MDgsMzg1IEMzMzkuMDQyLDM4NSAzNzIuNzEyLDM1MS4zMyAzNzIuNzEyLDMwOS43OTYgQzM3Mi43MTIsMjk2LjA5MiAzNjguOTg4LDI4My4yODMgMzYyLjU4NCwyNzIuMjE5IEMzNzQuMjUxLDI0Ny41NzUgMzgwLjgwNSwyMjAuMDU4IDM4MC44MDUsMTkxLjAzMSBMMzgwLjgwNSwxOTEuMDMxIFoiIGlkPSJGaWxsLTEiIGZpbGw9IiNmZmYiIG1hc2s9InVybCgjbWFzay0yKSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+';

	$iconhtml = sprintf( '<img src="%s" />', $iconurl );

	$wp_admin_bar->add_node(
		array(
			'id'    => 'oxy-templates',
			'title' => $iconhtml . __( 'Templates' ),
			'href'  => admin_url( 'edit.php?post_type=ct_template' ),
			'meta'  => array(
				'class' => 'oxy-toolbar-item',
				'title' => __( 'List of Oxygen Templates' ),
			),
		)
	);
	$wp_admin_bar->add_node(
		array(
			'id'    => 'oxy-pages',
			'title' => $iconhtml . __( 'Pages' ),
			'href'  => admin_url( 'edit.php?post_type=page' ),
			'meta'  => array(
				'class' => 'oxy-toolbar-item',
				'title' => __( 'List of WordPress Pages' ),
			),
		)
	); ?>

	<style>
		#wpadminbar .oxy-toolbar-item .ab-item {
			display: flex;
			align-items: center;
		}

		#wpadminbar .oxy-toolbar-item img {
			height: 13px;
			padding-right: 6px;
		}

		/* .oxy-toolbar-item ul {
			max-height: 400px;
			overflow-y: scroll;
		} */
	</style>

<?php }

add_action( 'admin_bar_menu', 'custom_edit_oxy_templates_submenu', 999 );
/**
 * Adds Oxygen Templates as submenu items to the Templates menu item in the WordPress toolbar.
 *
 * @param object $wp_admin_bar WP_Admin_Bar instance, passed by reference
 */
function custom_edit_oxy_templates_submenu( $wp_admin_bar ) {

	if ( ! function_exists( 'oxygen_vsb_current_user_can_access' ) || ! oxygen_vsb_current_user_can_access() ) {
		return;
	}

	// WP_Query arguments
	$args = array(
		'post_type' => array( 'ct_template' ),
		// 'order' => 'ASC',
		// 'orderby' => 'title',
		'posts_per_page' => -1,
	);

	// The Query
	$query = new WP_Query( $args );

	// The Loop
	if ( $query->have_posts() ) {
		foreach ( $query->get_posts() as $p ) {
			$ct_template_type = get_post_meta( $p->ID, 'ct_template_type', true );

			$ct_parent_template = get_post_meta( $p->ID, 'ct_parent_template', true );

			$shortcodes = '';

			if ( $ct_parent_template && $ct_parent_template > 0 ) {
				$shortcodes = get_post_meta( $ct_parent_template, 'ct_builder_shortcodes', true );
			}

			$ct_inner = ( $shortcodes && strpos( $shortcodes, '[ct_inner_content' ) !== false ) ? '&ct_inner=true' : '';

			$edit_url = ct_get_post_builder_link( $p->ID ) . $ct_inner;

			$wp_admin_bar->add_node(
				array(
					'id'    => $p->ID,
					'title' => $p->post_title,
					'parent' => 'oxy-templates',
					'href'  => esc_url( $edit_url ),
					'meta'  => array(
						'title' => __( 'Edit this Template' ),
					),
				)
			);
		} // End foreach().
	} else {
		// no posts found
	}

	// Restore original Post Data
	wp_reset_postdata();
}

add_action( 'admin_bar_menu', 'custom_edit_wp_pages_submenu', 999 );
/**
 * Adds WordPress Pages as submenu items to the Pages menu item in the WordPress toolbar.
 *
 * @param object $wp_admin_bar WP_Admin_Bar instance, passed by reference
 */
function custom_edit_wp_pages_submenu( $wp_admin_bar ) {

	if ( ! function_exists( 'oxygen_vsb_current_user_can_access' ) || ! oxygen_vsb_current_user_can_access() ) {
		return;
	}

	// WP_Query arguments
	$args = array(
		'post_type' => array( 'page' ),
		// 'order' => 'ASC',
		// 'orderby' => 'title',
		'posts_per_page' => -1,
	);

	// The Query
	$query = new WP_Query( $args );

	// The Loop
	if ( $query->have_posts() ) {
		foreach ( $query->get_posts() as $p ) {
			if ( get_option( 'page_for_posts' ) == $p->ID || get_option( 'page_on_front' ) == $p->ID ) {
				$generic_view = ct_get_archives_template( $p->ID ); // true, for exclude templates of type inner_content

				if ( ! $generic_view ) {  // if not template is set to apply to front page or blog posts page, then use the generic page template, as these are pages
					$generic_view = ct_get_posts_template( $p->ID );
				}
			} else {
				$generic_view = ct_get_posts_template( $p->ID ); // true, exclude templates of type inner_content
			}

			$ct_other_template = get_post_meta( $p->ID, 'ct_other_template', true );

			// check if the other template contains ct_inner_content
			$shortcodes = false;

			if ( $ct_other_template && $ct_other_template > 0 ) {
				$shortcodes = get_post_meta( $ct_other_template, 'ct_builder_shortcodes', true );
			} elseif ( $generic_view && $ct_other_template != -1) {
				$shortcodes = get_post_meta( $generic_view->ID, 'ct_builder_shortcodes', true );
			}

			$ct_inner = ( ( $shortcodes && strpos( $shortcodes, '[ct_inner_content') !== false ) && intval( $ct_other_template ) !== -1 ) ? '&ct_inner=true' : '';

			$edit_url = esc_url( ct_get_post_builder_link( $p->ID ) ) . $ct_inner;

			$wp_admin_bar->add_node(
				array(
					'id'    => $p->ID,
					'title' => $p->post_title,
					'parent' => 'oxy-pages',
					'href'  => $edit_url,
					'meta'  => array(
						'title' => __( 'Edit this Page with Oxygen' ),
					),
				)
			);
		} // End foreach().
	} else {
		// no posts found
	} // End if().

	// Restore original Post Data
	wp_reset_postdata();

}

Set the snippet to run everywhere.

Save changes and activate.

References

/wp-content/plugins/oxygen/component-framework/admin/cpt-templates.php

/wp-content/plugins/oxygen/component-framework/admin/pages.php

https://core.trac.wordpress.org/ticket/18408#comment:25

tagschevron-leftchevron-rightchainangle-rightangle-upangle-downfolder-omagnifiercrossmenuchevron-downarrow-right