Inventory_Presser_Email_A_Friend
On This Page
Description Description
Implement a mailto: link in a specific menu item in a specific menu that often exists in Inventory Presser websites.
If a menu item of type "Custom Link" exists with "Email a Friend" set as the "Navigation Label", this class will change the URL to a mailto: link containing vehicle information so the vehicle can be sent to a friend via email.
Source Source
File: includes/class-menu-item-email-a-friend.php
class Inventory_Presser_Email_A_Friend { /** * hooks * * 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_change_link' ), 11, 4 ); } /** * maybe_change_link * * Fills out a mailto: link with vehicle information * * Target a specific button in a specific menu and modify the URL. * * @uses get_bloginfo(), get_permalink() * * @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 */ function maybe_change_link( $menu_item, $item, $depth, $args ) { // looking for $menu_item = <a href="mailto:">Email a Friend</a> // is it the vehicle details menu? if ( empty( $args ) || empty( $args->menu ) || empty( $args->menu->name ) || __( 'Vehicle Details Buttons', 'inventory-presser' ) != $args->menu->name ) { // no return $menu_item; } // is it a custom link labeled email a friend? if ( 'Custom Link' != $item->type_label || strtolower( __( 'Email a Friend', 'inventory-presser' ) ) != strtolower( $item->title ) ) { // no return $menu_item; } // change the link to contain vehicle information global $post; $menu_item = str_replace( 'mailto:', $this->url( $post ) . '" target="_blank', $menu_item ); return $menu_item; } /** * Creates a mailto: url to draft an email containing vehicle information. * * @uses get_bloginfo(), get_permalink() * * @param WP_Post $post A vehicle post object. * @return string */ public function url( $post ) { if ( ! isset( $post->post_title ) ) { return ''; } $subject = 'Check out this ' . $post->post_title; $body = sprintf( 'Please look at this %s for sale at %s: %s', $post->post_title, html_entity_decode( get_bloginfo(), ENT_QUOTES ), // WordPress encodes quotes in site names get_permalink( $post ) ); return sprintf( 'mailto:?subject=%s&body=%s', rawurlencode( htmlspecialchars_decode( $subject ) ), rawurlencode( htmlspecialchars_decode( $body ) ) ); } }
Expand full source codeCollapse full source codeView on Github
Methods Methods
- add_hooks — hooks
- maybe_change_link — maybe_change_link
- url — Creates a mailto: url to draft an email containing vehicle information.
Changelog Changelog
Version | Description |
---|---|
3.8.0 | Introduced. |