WordPress.org

Plugin Directory

Changeset 705928


Ignore:
Timestamp:
04/30/13 14:16:09 (4 years ago)
Author:
JonBishop
Message:

Added custom meta box to choose which templates to display CTA on

Location:
call-to-action
Files:
9 added
4 edited

Legend:

Unmodified
Added
Removed
  • call-to-action/trunk/call-to-action-admin.php

    r319751 r705928  
    122122    return $columns; 
    123123} 
     124 
     125function ctaw_display_options(){ 
     126    return array( 
     127        '_is_all_ctaw'  => 'Every Page', 
     128        '_is_front_ctaw' => 'Static Front Page', 
     129        '_is_page_ctaw' => 'Single Page', 
     130        '_is_home_ctaw' => 'Blog Page', 
     131        '_is_single_ctaw' => 'Single Post', 
     132        '_is_archive_ctaw' => 'Archive', 
     133        '_is_author_ctaw' => 'Author Archive', 
     134        '_is_404_ctaw' => '404 Page', 
     135        '_is_search_ctaw' => 'Search Page' 
     136    ); 
     137} 
     138// Meta box 
     139function ctaw_add_meta_box() { 
     140        add_meta_box('ctaw-buttons-meta', __('Call To Action Display', 'ctaw'),  'ctaw_metabox_admin', 'ctaw', 'side'); 
     141} 
     142 
     143function ctaw_metabox_admin() { 
     144    global $post; 
     145    $display_options = ctaw_display_options(); 
     146     
     147    $default_content = ""; 
     148    $default_content .= '<input type="hidden" name="ctaw_settings_noncename" id="ctaw_settings_noncename" value="' . wp_create_nonce(plugin_basename(__FILE__)) . '" />'; 
     149    $default_content .= '<ul id="inline-sortable">'; 
     150    foreach ($display_options as $ctaw_display=>$ctaw_name) { 
     151        $default_content .= '<li class="ui-state-default"><label class="selectit"><input value="1" type="checkbox" name="'.$ctaw_display.'" id="post-share-' . $ctaw_display . '"' . checked(get_post_meta($post->ID, $ctaw_display, true), 1, false) . '/> <span>' . __($ctaw_name) . '</span></label></li>'; 
     152    } 
     153    $default_content .= '</ul>'; 
     154    echo $default_content; 
     155} 
     156 
     157//============================================= 
     158// On save post, update post meta 
     159//============================================= 
     160function ctaw_admin_process($post_ID) { 
     161    if (!isset($_POST['ctaw_settings_noncename']) || !wp_verify_nonce($_POST['ctaw_settings_noncename'], plugin_basename(__FILE__))) { 
     162        return $post_ID; 
     163    } 
     164    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
     165        return $post_ID; 
     166 
     167    if ('page' == $_POST['post_type']) { 
     168        if (!current_user_can('edit_page', $post_ID)) 
     169            return $post_ID; 
     170    } else { 
     171        if (!current_user_can('edit_post', $post_ID)) 
     172            return $post_ID; 
     173    } 
     174 
     175    $ctawmetaarray = array(); 
     176    $ctawmetaarray_text = ""; 
     177     
     178    if (isset($_POST['hide_alert']) && ($_POST['hide_alert'] > 0)) { 
     179        array_push($ctawmetaarray, $_POST['hide_alert']); 
     180    } 
     181    if (isset($_POST['ctaw_text']) && ($_POST['ctaw_text'] != "")) { 
     182        $ctawmetaarray_text = $_POST['ctaw_text']; 
     183    } 
     184    if (isset($_POST['ctaw_buttons'])) { 
     185        foreach ($_POST['ctaw_buttons'] as $button) { 
     186            if (($button > 0)) { 
     187                array_push($ctawmetaarray, $button); 
     188            } 
     189            $formid++; 
     190        } 
     191    } 
     192    $ctawmeta = implode(',', $ctawmetaarray); 
     193 
     194    if (!wp_is_post_revision($post_ID) && !wp_is_post_autosave($post_ID)) { 
     195        $display_options = ctaw_display_options(); 
     196        foreach ($display_options as $ctaw_display=>$ctaw_name) { 
     197            if (isset($_POST[$ctaw_display]) && $_POST[$ctaw_display] != ''){ 
     198                update_post_meta($post_ID, $ctaw_display, 1); 
     199            } else { 
     200                update_post_meta($post_ID, $ctaw_display, 0); 
     201            } 
     202        } 
     203    } 
     204} 
    124205?> 
  • call-to-action/trunk/call-to-action-display.php

    r319751 r705928  
    11<?php 
    2 function ctaw_display_action($before_widget, $after_widget, $before_title, $after_title, $hide_title = false){ 
    3     $current_categories = array(); 
    4     $possible_actions = array(); 
    5     $possible_titles = array(); 
    6     $alt_actions = array(); 
    7     $alt_titles = array(); 
    8      
    9     //Get Parent Post Cateogires 
    10     global $post; 
    11     $categories = get_the_category($post->ID); 
    12     //Set up category names in an array 
    13     foreach ($categories as $category) { 
    14         array_push($current_categories,$category->category_nicename); 
    15     } 
    16      
    17     //Get all calls to action 
    18     $args = array('post_type' => 'ctaw'); 
    19     $ctaws = get_posts($args); 
    20     foreach ($ctaws as $ctaw) { 
    21         $action_categories = array(); 
    22         setup_postdata($ctaw); 
    23         //Get call to action categories 
    24         $ctaw_cats = get_the_category($ctaw->ID); 
    25         //Set call to action category names in an array 
    26         foreach ($ctaw_cats as $ctaw_cat){ 
    27             array_push($action_categories,$ctaw_cat->category_nicename); 
    28         } 
    29         // either populate an array of possible actions or display an alternative action if page has no categories 
    30         if(count($action_categories)==0){ 
    31             array_push($alt_actions,array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
    32         }else if (array_intersect($current_categories, $action_categories)){ 
    33             array_push($possible_actions,array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
    34         }  
    35     } 
    36     //display results 
     2function ctaw_display_action($before_widget, $after_widget, $before_title, $after_title, $hide_title = false) { 
     3    $current_categories = array(); 
     4    $possible_actions = array(); 
     5    $possible_titles = array(); 
     6    $alt_actions = array(); 
     7    $alt_titles = array(); 
    378 
    38     if(count($possible_actions)>0){ 
    39         $rand_key = array_rand($possible_actions,1); 
    40         $ctaw_id = $possible_actions[$rand_key][0];  
    41         $ctaw_title = $possible_actions[$rand_key][1];  
    42         $ctaw_content = $possible_actions[$rand_key][2]; 
    43     } else { 
    44         $rand_key = array_rand($alt_actions,1); 
    45         $ctaw_id = $alt_actions[$rand_key][0];  
    46         $ctaw_title = $alt_actions[$rand_key][1];  
    47         $ctaw_content = $alt_actions[$rand_key][2]; 
    48     } 
    49      
    50     $page = get_option('siteurl'); 
    51     $page = get_page_link(); 
    52     $symbol = (preg_match('/\?/', $page)) ? '&' : '?'; 
    53     $ctaw_content = str_replace('"', '\'', $ctaw_content); 
    54     $ctaw_content = str_replace('href=\'http', 'href=\'' . $page . $symbol . 'ctaw_redirect_' . $ctaw_id . '=http', $ctaw_content); 
    55      
    56     $content = ""; 
    57      
    58     $content .= $before_widget;  
    59     if(!$hide_title){ 
    60         $content .= $before_title . $ctaw_title . $after_title; 
    61     } 
    62     $content .= $ctaw_content; 
    63     $content .= $after_widget; 
    64      
    65     ctaw_register_impression($ctaw_id); 
    66      
    67     return $content; 
     9    //Get Parent Post Cateogires 
     10    global $post; 
     11    $categories = get_the_category($post->ID); 
     12    //Set up category names in an array 
     13    foreach ($categories as $category) { 
     14        array_push($current_categories, $category->category_nicename); 
     15    } 
     16 
     17    //Get all calls to action 
     18    $args = array('post_type' => 'ctaw'); 
     19    $ctaws = get_posts($args); 
     20    foreach ($ctaws as $ctaw) { 
     21        $action_categories = array(); 
     22        setup_postdata($ctaw); 
     23        //Get call to action categories 
     24        $ctaw_cats = get_the_category($ctaw->ID); 
     25        //Set call to action category names in an array 
     26        foreach ($ctaw_cats as $ctaw_cat) { 
     27            array_push($action_categories, $ctaw_cat->category_nicename); 
     28        } 
     29         
     30        // either populate an array of possible actions or display an alternative action if page has no categories 
     31        $every_page = get_post_meta($ctaw->ID, '_is_all_ctaw', true); 
     32        $front_page = get_post_meta($ctaw->ID, '_is_front_ctaw', true); 
     33        $single_page = get_post_meta($ctaw->ID, '_is_page_ctaw', true); 
     34        $home_page = get_post_meta($ctaw->ID, '_is_home_ctaw', true); 
     35        $single_post = get_post_meta($ctaw->ID, '_is_single_ctaw', true); 
     36        $archive_page = get_post_meta($ctaw->ID, '_is_archive_ctaw', true); 
     37        $author_page = get_post_meta($ctaw->ID, '_is_author_ctaw', true); 
     38        $error_page = get_post_meta($ctaw->ID, '_is_404_ctaw', true); 
     39        $search_page = get_post_meta($ctaw->ID, '_is_search_ctaw', true); 
     40         
     41        if($every_page) 
     42            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     43        if($front_page && is_front_page()) 
     44            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     45        if($single_page && is_single()) 
     46            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     47        if($home_page && is_home()) 
     48            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     49        if($archive_page && is_archive()) 
     50            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     51        if($author_page && is_author()) 
     52            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     53        if($error_page && is_404()) 
     54            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     55        if($search_page && is_search()) 
     56            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     57        if ($single_post && count($action_categories) == 0) { 
     58            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     59        } else if (is_single() && $single_post && array_intersect($current_categories, $action_categories)) { 
     60            array_push($possible_actions, array($ctaw->ID, $ctaw->post_title, $ctaw->post_content)); 
     61        } 
     62    } 
     63     
     64    // Reset post data to keep other plugins happy 
     65    wp_reset_postdata(); 
     66     
     67    // Remove duplicates 
     68    $possible_actions = array_map("unserialize", array_unique(array_map("serialize", $possible_actions))); 
     69    //$alt_actions = array_map("unserialize", array_unique(array_map("serialize", $alt_actions))); 
     70    //display results 
     71 
     72    $rand_key = array_rand($possible_actions, 1); 
     73    $ctaw_id = $possible_actions[$rand_key][0]; 
     74    $ctaw_title = $possible_actions[$rand_key][1]; 
     75    $ctaw_content = $possible_actions[$rand_key][2]; 
     76 
     77    $page = get_option('siteurl'); 
     78    $page = get_page_link(); 
     79    $symbol = (preg_match('/\?/', $page)) ? '&' : '?'; 
     80    $ctaw_content = str_replace('"', '\'', $ctaw_content); 
     81    $ctaw_content = str_replace('href=\'http', 'href=\'' . $page . $symbol . 'ctaw_redirect_' . $ctaw_id . '=http', $ctaw_content); 
     82 
     83    $content = ""; 
     84 
     85    $content .= $before_widget; 
     86    if (!$hide_title) { 
     87        $content .= $before_title . $ctaw_title . $after_title; 
     88    } 
     89    $content .= $ctaw_content; 
     90    $content .= $after_widget; 
     91 
     92    ctaw_register_impression($ctaw_id); 
     93 
     94    return $content; 
    6895} 
    6996 
     
    7299//============================================= 
    73100class CTAW_Widget extends WP_Widget { 
    74      
     101 
    75102    /** constructor */ 
    76103    function CTAW_Widget() { 
    77         parent::WP_Widget(false, $name = 'Call To Action Widget');   
     104        parent::WP_Widget(false, $name = 'Call To Action Widget'); 
    78105    } 
    79106 
    80107    /** @see WP_Widget::widget */ 
    81     function widget($args, $instance) {  
    82         extract( $args ); 
    83         echo ctaw_display_action($before_widget, $after_widget, $before_title, $after_title);    
     108    function widget($args, $instance) { 
     109        extract($args); 
     110        $hide_title = $instance['hide_title'] ? '1' : '0'; 
     111        echo ctaw_display_action($before_widget, $after_widget, $before_title, $after_title, $hide_title); 
    84112    } 
    85113 
    86114    /** @see WP_Widget::update */ 
    87     function update($new_instance, $old_instance) {              
    88         $instance = $old_instance; 
     115    function update($new_instance, $old_instance) { 
     116        $instance = $old_instance; 
     117        $instance['hide_title'] = $new_instance['hide_title'] ? 1 : 0; 
    89118        return $instance; 
    90119    } 
     
    92121    /** @see WP_Widget::form */ 
    93122    function form($instance) { 
    94          
     123        $default_instance = array('hide_title' => ''); 
     124        ?> 
     125        <p><input class="checkbox" type="checkbox" <?php checked($instance['hide_title'], '1'); ?> id="<?php echo $this->get_field_id('hide_title'); ?>" name="<?php echo $this->get_field_name('hide_title'); ?>" /> <label for="<?php echo $this->get_field_id('hide_title'); ?>"><?php _e('Hide Title'); ?></label></p> 
     126        <?php 
    95127    } 
    96128 
    97 } // class CTAW_Widget  
     129} 
    98130 
     131// class CTAW_Widget  
    99132//============================================= 
    100133// Create 'Call to Action' shortcode 
    101134//============================================= 
    102135function ctaw_create_shortcode() { 
    103     return ctaw_display_action('', '', '', '', true); 
     136    return ctaw_display_action('', '', '', '', true); 
    104137} 
    105138?> 
  • call-to-action/trunk/call-to-action.php

    r319796 r705928  
    44Plugin URI: http://www.jonbishop.com/downloads/wordpress-plugins/call-to-action 
    55Description: Displays the most relavent Call to Action in your sidebar based on the content of the page 
    6 Version: 1.2 
     6Version: 1.3 
    77Author: Jon Bishop 
    88Author URI: http://www.jonbishop.com 
     
    5858add_filter("manage_edit-ctaw_columns", "ctaw_columns"); 
    5959 
     60// Meta box 
     61add_action('admin_menu', 'ctaw_add_meta_box'); 
     62add_action('save_post', 'ctaw_admin_process'); 
     63 
    6064?> 
  • call-to-action/trunk/readme.txt

    r319796 r705928  
    44Tags: widget, call to action, marketing, content sidebar, promote, advertising 
    55Requires at least: 3.0 
    6 Tested up to: 3.0.1 
    7 Stable tag: 1.2 
     6Tested up to: 3.5.1 
     7Stable tag: 1.3 
    88 
    99Displays the most relavent Call to Action in your sidebar based on the content of the page 
     
    3232== Changelog == 
    3333 
    34 The current version is 1.2 (2010.12.06) 
     34The current version is 1.3 (2013.04.30) 
     35 
     36= 1.3 (2013.04.30) = 
     37* Added custom meta box to choose which templates to display CTA on 
    3538 
    3639= 1.2 (2010.12.06) = 
Note: See TracChangeset for help on using the changeset viewer.