Inventory_Presser_Menu_Item_Print
On This Page
Description Description
Enable a print command when a specific menu item is clicked.
If a menu item of type "Custom Link" exists with "#" set as the target and the CSS class "invp-print-button", tell the browser to print the page when a visitor taps the button.
Source Source
File: includes/class-menu-item-print.php
class Inventory_Presser_Menu_Item_Print {
/**
* Set up filter and action hooks
*
* @uses add_filter()
*
* @return void
*/
public function add_hooks() {
add_filter( 'walker_nav_menu_start_el', array( $this, 'maybe_insert_print_button_javascript' ), 11, 4 );
}
/**
* maybe_insert_print_button_javascript
*
* Replace a link target of "#" with JavaScript that prints the page when a
* menu item has a CSS class of "invp-print-button".
*
* @param string $menu_item item HTML
* @param WP_Post $item post object for the menu item
* @param int $depth depth of the item for padding
* @param object $args nav menu arguments
* @return string item HTML
*/
function maybe_insert_print_button_javascript( $menu_item, $item, $depth, $args ) {
// does it have the magic CSS class?
if ( ! in_array( 'invp-print-button', $item->classes ) ) {
return $menu_item;
}
// is it a custom link?
if ( 'Custom Link' != $item->type_label ) {
// no
return $menu_item;
}
// is the link target a #?
if ( false !== strpos( $menu_item ?? '', 'href="#"' ) ) {
// yes, change it to JavaScript that prints the page
$menu_item = str_replace( 'href="#"', 'href="javascript:window.print();"', $menu_item );
}
return $menu_item;
}
}
Expand full source codeCollapse full source codeView on Github
Methods Methods
- add_hooks — Set up filter and action hooks
- maybe_insert_print_button_javascript — maybe_insert_print_button_javascript
Changelog Changelog
| Version | Description |
|---|---|
| 9.0.0 | Introduced. |