WordPress.org

Forums

Adding Meta to Plugin (13 posts)

  1. joseph.fedorowicz
    Member
    Posted 2 years ago #

    Hello,

    I would like to add some custom meta that I created using "Just Custom Fields."

    I thought I could add it like this: <p>.<?php echo $small; ?></p>

    and just add

    $small = get_post_meta($post->ID, 'small', true); // we get value for input text

    above. I'm just not sure where. Here is the code that I am editing (I was adding the echo before the anchor in the STRONG section):

    What am I doing wrong? Where do I put:

    $small = get_post_meta($post->ID, 'small', true); // we get value for input text

    ?

    Thanks.

    if ($options['source'] == '_featured') {
          $filter = array('numberposts' => $options['limit'],
                           'meta_key'   => '_fps_featured',
                           'meta_value' => 1,
                           'order'      => 'DESC',
                           'post_type'  => $types);
        } elseif (substr($options['source'], 0, 1) != '|') {
          $filter = array('numberposts' => $options['limit'],
                          'post_type'   => $options['source'],
                          'order'       => 'DESC',);
        } else {
          $source = explode('|', $options['source']);
          if ($source[1] == 'category') {
            $category = 'category';
          } else {
            $category = $source[1] . '_category';
          }
          $filter = array('numberposts' => $options['limit'],
                          'post_type'   => $types,
                          $category     => $source[2],
                          'order'       => 'DESC',);
    
        }
        if ($options['randomize']) {
          $filter['orderby'] = 'rand';
        } else {
          $filter['orderby'] = 'post_date';
        }
    
        $featured_posts = get_posts($filter);
        $small = get_post_custom($post->ID, 'small', true);   // we get value for input text
    
        require('slider-layout-templates.php');
    
        $out .= '<div id="fps-container" style="width: ' . $options['width'] . '">';
        $out .= '<div class="fps-slides-container">';
        $slide_nb = 1;
        $pagination = '';
    
    <strong>    foreach($featured_posts as $featured) {
          $pagination .= '<li><a href="">' . get_the_post_thumbnail($featured->ID, 'FPS pagination thumbnail', array('class' => 'fps-thumbnail-mini')) . '</a></li>';</strong>
    
          // $featured "is" $post
          // get per-post or global layout
          if (get_post_meta($featured->ID, '_fps_layout', true)) {
            $layout = get_post_meta($featured->ID, '_fps_layout', true);
          } else {
            $layout = $options['layout'];
          }
          if ($layout == 'custom') {
            $template = $options['custom-layout'];
          } else {
            $template = $layouts[$layout];
          }
    
          // get per-post or global thumbnail size
          if (get_post_meta($featured->ID, '_fps_thumbnail', true)) {
            $thumbnail_size = get_post_meta($featured->ID, '_fps_thumbnail', true);
          } else {
            $thumbnail_size = $options['thumbnail'];
          }
    
          $tags = get_the_tags($featured->ID);
          $tags2 = '';
          if ($tags)
            foreach($tags as $tag) {
              $tags2 .= '<a href="/tag/' . $tag->slug . '">' . $tag->name . '</a>, ';
            }
          $tags2 = trim($tags2, ', ');
    
          $content = $featured->post_content;
          if (strpos($content, '<!--more-->')) {
            $content = substr($content, 0, strpos($content, '<!--more-->')) . '  <a href="' . get_permalink($featured->ID) . '">(more...)</a>';
          }
          $content = apply_filters('the_content', $content);
    
          $thumbnail = get_post_thumbnail_id($featured->ID);
          $thumbnail = wp_get_attachment_image_src($thumbnail, $thumbnail_size);
  2. bcworkz
    Member
    Posted 2 years ago #

    Since you don't tell us what output you are expecting, we can't say where it should be placed.

    Your problem may be you are not using get_post_custom() correctly. From the context, I'm guessing you should be using get_post_meta() instead. Then $small will have a usable value and you can echo it where ever you want it to appear in the output.

  3. joseph.fedorowicz
    Member
    Posted 2 years ago #

    I've created a custom field called a Small Headline. I would like to output that underneath my thumbnail pagination.

    Thanks.

    http://www.philahoops.com/fakehome

  4. joseph.fedorowicz
    Member
    Posted 2 years ago #

    @BCWorkz

    Do you have anything further on this? I am completely stumped.

    Thanks,

    Joe

  5. bcworkz
    Member
    Posted 2 years ago #

    The location appears to be somewhere after where the foreach($featured_posts as $featured) loop closes. This is beyond the snippet you provided. But place it before the table cell containing thumbnail pagination closes. Certainly before the table cell containing "Other Top Stories".

    Can't be sure but I think the code you want to insert is:

    $small = get_post_meta($post->ID, 'small', true);
    echo $small;

    Just be sure it's contained in a php code block or it'll get output as html. You say the field is called Small Headline, but in code it is keyed simply as 'small'. Be sure the key you use is correct. If the plugin you use uses some alternative way to store fields besides post meta, then using get_post_meta() will not work.

  6. joseph.fedorowicz
    Member
    Posted 2 years ago #

    Still won't work. The custom field plugin I am using has this to say.

    To use values from these fields in your theme, you can use usual post meta functions such as:

    get_post_meta()
    get_post_custom()

    Let’s give you some examples. For example we create 3 custom fields for the Page with such slugs: price (Input Text), features (Checkboxes/multiple), slide_images (Upload Media / image). To get values in templates you need to call such lines of code inside the loop functions:

    $price = get_post_meta($post->ID, 'price', true);   // we get value for input text
    $images = get_post_meta($post->ID, 'slide_images', true);  // we get array of images
    $features = get_post_meta($post->ID, 'features', true);    // we get array of checked checkboxes

    Now when you have variables with data you can print them in the template. For example like this:

    <p>Price: <?php echo $price; ?></p>
    <p>Features: <?php foreach($features as $feature) echo $feature.','; ?></p>
    <p>Images:</p>
    <?php if(!empty($images)) foreach($images as $img) : ?>
    	<div class="image"><img src="<?php echo $img['image']; ?>" alt="<?php echo esc_attr($img['title']); ?>" /></div>
    <?php endforeach; ?>
    <?php
    
    class wf_fps {
      public static $do_footer = false;
    
      public function init() {
        if (is_admin() && current_user_can('switch_themes')) {
          // add FPS menu to admin apperance(theme) menu group
          add_action('admin_menu', array('wf_fps', 'admin_menu'));
    
          // settings registration
          add_action('admin_init', array('wf_fps', 'register_settings'));
    
          // if the plugin was installed/reinstalled/broken set settings to default
          self::default_settings(false);
    
          // aditional link in plugin description
          add_action('plugin_action_links_' . basename(dirname(__FILE__)) . '/' . basename(__FILE__), array('wf_fps', 'plugin_action_links'));
          add_filter('plugin_row_meta', array(__CLASS__, 'plugin_meta_links'), 10, 2);
    
          // inject JS code in header for AJAX
          add_action('admin_head', array('wf_fps', 'admin_head'));
    
          // register AJAX endpoints
          add_action('wp_ajax_fps_post_featured', array('wf_fps', 'ajax_callback_post_featured'));
          add_action('wp_ajax_fps_copy_layout', array('wf_fps', 'ajax_callback_copy_layout'));
    
          // add custom column "featured"
          add_filter('manage_posts_columns', array('wf_fps', 'add_featured_column'));
          add_filter('manage_pages_columns', array('wf_fps', 'add_featured_column'));
          add_action('manage_posts_custom_column', array('wf_fps', 'manage_featured_column'), 10, 2);
          add_action('manage_pages_custom_column', array('wf_fps', 'manage_featured_column'), 10, 2);
    
          // enable users to mark a post featured while writing it
          add_action('add_meta_boxes', array('wf_fps', 'add_custom_box'));
          add_action('save_post', array('wf_fps', 'save_postdata'));
        } elseif (!is_admin()) {
          // use footer to inject FPS JS/CSS when needed
          add_action('wp_footer', array('wf_fps', 'wp_footer'));
        }
    
        // add shortcode support for sidebar text widget
        if (has_filter('widget_text', 'do_shortcode') === false) {
          add_filter('widget_text', 'do_shortcode');
        }
    
        $options = get_option('wf_fps');
    
        // add additional image size for slider
        if ($options['additional-height'] && $options['additional-width']) {
          add_image_size('FPS thumbnail', $options['additional-width'], $options['additional-height'], $options['additional-crop']);
        }
        if ($options['thumbnail-height'] && $options['thumbnail-width']) {
          add_image_size('FPS pagination thumbnail', $options['thumbnail-width'], $options['thumbnail-height'], true);
        }
    
        // add shortcode
        global $shortcode_tags;
        $shortcode = $options['shortcode'];
        if (isset($shortcode_tags[$shortcode])) {
          add_action('admin_footer', array('wf_fps', 'warning'));
        } else {
          add_shortcode($shortcode, array('wf_fps', 'shortcode'));
        }
      } // init
    
      // add thumbnail support for theme
      function add_thumb_support() {
        add_theme_support('post-thumbnails');
      } // add_thumb_support
    
      // add links to plugin's description in plugins table
      function plugin_meta_links($links, $file) {
         $documentation_link = '<a target="_blank" href="' . plugin_dir_url(__FILE__) . 'documentation/" title="View Premium Featured Posts Slider documentation">Documentation</a>';
        $support_link = '<a target="_blank" href="http://codecanyon.net/user/WebFactory#from" title="Contact Web factory">Support</a>';
    
        if ($file == plugin_basename(__FILE__)) {
          $links[] = $documentation_link;
          $links[] = $support_link;
        }
    
        return $links;
      } // plugin_meta_links
    
      // add settings link to plugins page
      function plugin_action_links($links) {
        $settings_link = '<a href="themes.php?page=wf-fps" title="Featured Posts Slider Settings">Settings</a>';
        array_unshift($links, $settings_link);
    
        return $links;
      } // plugin_action_links
    
      // create the admin menu item
      function admin_menu() {
        add_theme_page('Premium Featured Posts Slider', 'Premium Featured Posts Slider', 'manage_options', 'wf-fps', array('wf_fps', 'options_page'));
      } // admin_menu
    
      // all settings are saved in one option
      function register_settings() {
        register_setting('wf_fps', 'wf_fps', array('wf_fps', 'sanitize_settings'));
      } // register_settings
    
      // set default settings
      function default_settings($force = false) {
        $defaults['width'] = '600px';
        $defaults['source'] = 'post';
        $defaults['limit'] = 5;
        $defaults['thumbnail'] = 'medium';
        $defaults['layout'] = 'layout-2';
        $defaults['custom-layout'] = '';
        $defaults['prev-next'] = 1;
        $defaults['pagination'] = 1;
        $defaults['autoplay'] = 5000;
        $defaults['effect'] = 'slide';
        $defaults['effect-speed'] = 350;
        $defaults['hover-pause'] = 1;
        $defaults['randomize'] = 0;
        $defaults['include-css'] = 1;
        $defaults['include-jquery'] = 0;
        $defaults['include-slides'] = 1;
        $defaults['shortcode'] = 'fps';
        $defaults['additional-width'] = 330;
        $defaults['additional-height'] = 330;
        $defaults['additional-crop'] = 1;
        $defaults['conditional'] = '';
        $defaults['thumbnail-width'] = 50;
        $defaults['thumbnail-height'] = 50;
    
        $options = get_option('wf_fps');
    
        if ($force || !$options || !$options['source']) {
          update_option('wf_fps', $defaults);
        }
      } // default_settings
    
      // add custom boxes to all post types
      function add_custom_box() {
        add_meta_box('featured', 'Featured Posts Slider <i>per-post</i> options', array('wf_fps', 'inner_custom_box'), 'post', 'normal', 'high');
        add_meta_box('featured', 'Featured Posts Slider <i>per-post</i> options', array('wf_fps', 'inner_custom_box'), 'page', 'normal', 'high');
    
        // add box to custom post types
        $post_types = get_post_types(array('public' => true, '_builtin' => false), 'object', 'and');
        if ($post_types) {
          foreach ($post_types  as $post_type ) {
            add_meta_box('featured', 'Featured Posts Slider <i>per-post</i> options', array('wf_fps', 'inner_custom_box'), $post_type->query_var, 'normal', 'high');
          }
        }
      } // add_custom_box
    
      // custom box for post/page edit
      function inner_custom_box() {
        global $post;
    
        $layouts[] = array('val' => '',         'label' => 'Default layout defined in global FPS options');
        $layouts[] = array('val' => 'layout-1', 'label' => 'Layout 1 - Large image with title on image bottom');
        $layouts[] = array('val' => 'layout-2', 'label' => 'Layout 2 - Thumbnail with content on right');
        $layouts[] = array('val' => 'layout-3', 'label' => 'Layout 3 - Medium image with content on right');
        $layouts[] = array('val' => 'layout-4', 'label' => 'Layout 4 - Large image with title above image ');
        $layouts[] = array('val' => 'layout-5', 'label' => 'Layout 5 - Thumbnail with content on left');
        $layouts[] = array('val' => 'layout-6', 'label' => 'Layout 6 - Medium image with content on left');
        $layouts[] = array('val' => 'custom',   'label' => 'Custom layout');
    
        $featured = get_post_meta($post->ID, '_fps_featured', true);
        $thumbnail = get_post_meta($post->ID, '_fps_thumbnail', true);
        $layout = get_post_meta($post->ID, '_fps_layout', true);
        wp_nonce_field(plugin_basename(__FILE__), 'featured_noncename');
    
        echo '<p><label class="fps-label" for="fps_featured">Featured:</label> <select name="fps_featured" id="fps_featured">';
        echo '<option' . ((!$featured)? ' selected="selected"':'') . ' value="0">No, this post is not featured&nbsp;</option>';
        echo '<option' . (($featured)? ' selected="selected"':'') . ' value="1">Yes, this post is featured</option>';
        echo '</select><br /><br />';
    
        echo '<label class="fps-label" for="fps_layout">Layout:</label> <select name="fps_layout" id="fps_layout">';
          self::create_select_options($layouts, $layout);
        echo '</select><br /><br />';
    
        global $_wp_additional_image_sizes;
        $sizes[] = array('val'=> '', 'label' => 'Default thumbnail size defined in global FPS options');
        $sizes[] = array('val'=> 'thumbnail', 'label' => 'Thumbnail, ' . get_option('thumbnail_size_w') . 'x' . get_option('thumbnail_size_h') . (get_option('thumbnail_crop')? ', cropped':''));
        $sizes[] = array('val'=> 'medium', 'label' => 'Medium, ' . get_option('medium_size_w') . 'x' . get_option('medium_size_h'));
        $sizes[] = array('val'=> 'large', 'label' => 'Large, ' . get_option('large_size_w') . 'x' . get_option('large_size_h'));
        if ($_wp_additional_image_sizes) {
          foreach ($_wp_additional_image_sizes as $tmp => $tmp2) {
            $sizes[] = array('val'=> $tmp, 'label' => $tmp . ', ' . $tmp2['width'] . 'x' . $tmp2['height'] . ($tmp2['crop']? ', cropped':''));
          }
        }
        echo '<label class="fps-label" for="fps_thumbnail">Thumbnail:</label> <select name="fps_thumbnail" id="fps_thumbnail">';
          self::create_select_options($sizes, $thumbnail);
        echo '</select></p>';
    
        echo '<p><br /><a href="themes.php?page=wf-fps" title="Configure global FPS options">Configure global FPS options</a></p>';
      } // inner_custom_box
    
      // save fetured box data
      function save_postdata($post_id) {
        if (!wp_verify_nonce($_POST['featured_noncename'], plugin_basename(__FILE__)) || (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)) {
          return $post_id;
        }
    
        update_post_meta($post_id, '_fps_featured', $_POST['fps_featured']);
        update_post_meta($post_id, '_fps_layout', $_POST['fps_layout']);
        update_post_meta($post_id, '_fps_thumbnail', $_POST['fps_thumbnail']);
    
        return $post_id;
      } // save_postdata
    
      // mark post as fetured/unfeatured
      function ajax_callback_post_featured() {
        $post_id = (int) $_POST['post_id'];
        $state = (isset($_POST['state']) && !empty($_POST['state']))? 1: 0;
        update_post_meta($post_id, '_fps_featured', $state);
    
        die('1');
      } // ajax_callback_post_featured
    
      // mark post as fetured/unfeatured
      function ajax_callback_copy_layout() {
        require('slider-layout-templates.php');
    
        if (isset($layouts[$_POST['layout']])) {
          $template = $layouts[$_POST['layout']];
        } else {
          $template = '';
        }
    
        echo json_encode($template);
        die();
      } // ajax_callback_post_featured
    
      // featured column for all posts/pages/custom post types
      function add_featured_column($cols) {
        $cols['fps_featured'] = 'Featured';
    
        return $cols;
      } // add_featured_column
    
      // featured column content
      function manage_featured_column($column_name, $post_id) {
        if ($column_name == 'fps_featured') {
          echo '<input onchange="javascript: fps_featured_change(this, ' . $post_id . ');" ';
          echo 'type="checkbox" class="fps_featured" id="fps_featured_' . $post_id . '" value="1" ';
          echo checked('1', get_post_meta($post_id, '_fps_featured', true), false)  . ' />';
         }
    
      return;
      } // manage_featured_column
    
      // admin JS/CSS
      function admin_head() {
        if (strpos($_SERVER['REQUEST_URI'], 'wf-fps') === false
            && strpos($_SERVER['REQUEST_URI'], 'edit.php') === false
            && strpos($_SERVER['REQUEST_URI'], 'post.php') === false
            ) {
          return;
        }
        ?>
        <script type="text/javascript">
        function fps_featured_change(checkbox, post_id) {
          var data = {action: 'fps_post_featured',
                      state: jQuery(checkbox).attr('checked'),
                      post_id: post_id};
    
          jQuery(checkbox).attr('disabled', 'disabled');
          jQuery.post(ajaxurl, data, function(response) { jQuery(checkbox).removeAttr('disabled'); });
    
          return false;
        }
    
        function fps_copy_layout() {
          var data = {action: 'fps_copy_layout',
                      layout: jQuery('#layouts-sel').val()};
    
          jQuery('#custom-layout').attr('disabled', 'disabled');
          jQuery.post(ajaxurl, data, function(response) { jQuery('#custom-layout').val(response).removeAttr('disabled'); }, 'json');
    
          return false;
        }
        </script>
         <style type="text/css">
          div.layout-thumb {
            width: 200px;
            margin: 0 50px 20px 0;
            float: left;
          }
          div.layout-thumb img {
            padding-bottom: 5px;
          }
          div.layout-thumb input {
            margin-right: 5px;
          }
          label.fps-label {
            min-width: 75px;
            float: left;
            line-height: 23px;
          }
        </style>
        <?php
      } // admin_head
    
      // helper function for creating select's options
      function create_select_options($options, $selected = null, $output = true) {
        $out = "\n";
    
        foreach ($options as $tmp) {
          if ($selected == $tmp['val']) {
            $out .= "<option selected=\"selected\" value=\"{$tmp['val']}\">{$tmp['label']}&nbsp;</option>\n";
          } else {
            $out .= "<option value=\"{$tmp['val']}\">{$tmp['label']}&nbsp;</option>\n";
          }
        }
    
        if($output) {
          echo $out;
        } else {
          return $out;
        }
      } // create_select_options
    
      // sanitize settings on save
      function sanitize_settings($values) {
        foreach ($values as $key => $value) {
          switch ($key) {
            case 'limit':
            case 'prev-next':
            case 'pagination':
            case 'autoplay':
            case 'effect-speed':
            case 'hover-pause':
            case 'randomize':
            case 'include-css':
            case 'include-jquery':
            case 'include-slides':
            case 'additional-width':
            case 'additional-height':
            case 'thumbnail-width':
            case 'thumbnail-height':
            case 'additional-crop':
              $values[$key] = (int) $value;
            break;
            case 'width':
            case 'source':
            case 'thumbnail':
            case 'layout':
            case 'effect':
            case 'conditional':
              $values[$key] = trim($value);
            break;
            case 'shortcode':
              $values[$key] = strtolower(trim($value));
              $values[$key] = str_replace(' ', '', $values[$key]);
            break;
            case 'custom-layout':
            break;
          } // switch
        } // foreach
    
        self::check_var_isset($values, array('prev-next' => 0,
                                             'pagination' => 0,
                                             'hover-pause' => 0,
                                             'randomize' => 0,
                                             'include-css' => 0,
                                             'include-jquery' => 0,
                                             'include-slides' => 0,
                                             'additional-crop' => 0));
    
        set_transient('wf-fps-updated', true, 10);
    
        return $values;
      } // sanitize_settings
    
      // helper function for $_POST checkbox handling
      function check_var_isset(&$values, $variables) {
        foreach ($variables as $key => $value) {
          if (!isset($values[$key])) {
            $values[$key] = $value;
          }
        }
      } // check_var_isset
    
      // output the whole options page
      function options_page() {
        if (!current_user_can('manage_options'))  {
          wp_die('You do not have sufficient permissions to access this page.');
        }
    
        $options = get_option('wf_fps');
    
        if (get_transient('wf-fps-updated')) {
          echo '<div id="message-fps" class="updated"><p><b>Changes saved.</b></p></div>';
          delete_transient('wf-fps-updated');
        }
    
        echo '<div class="wrap">
              <div class="icon32" id="icon-themes"><br /></div>
              <h2>Premium Featured Posts Slider</h2>';
    
        echo '<form action="options.php" method="post">';
        settings_fields('wf_fps');
    
        echo '<h3>Content & Layout</h3>';
    
        echo '<table class="form-table"><tbody>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="width">Width</label></th>
        <td><input type="text" id="width" style="width: 100px;" class="small-text" name="wf_fps[width]" value="' . $options['width'] . '" />';
        echo ' Slider container width. Set the value according to your theme layout. Any CSS parsable value is accepted. We don\'t recommend using "100%". Default: 600px.</td>
        </tr>';
    
        $sources[] = array('val' => '_featured', 'label' => 'Posts, pages and custom types selected as featured');
        $sources[] = array('val' => 'post', 'label' => 'Latest Posts');
        $sources[] = array('val' => 'page', 'label' => 'Latest Pages');
        $post_types = get_post_types(array('public' => true, '_builtin' => false), 'object', 'and');
        if ($post_types) {
          foreach ($post_types  as $post_type ) {
            $sources[] = array('val' => $post_type->query_var, 'label' => 'Latest ' . $post_type->labels->name);
          }
        }
    
        $excluded_items = array('nav_menu', 'link_category', 'post_format');
        $taxonomies = get_taxonomies(array('public' => true), 'objects');
        if ($taxonomies) {
          foreach ($taxonomies  as $taxonomy) {
            if (!in_array($taxonomy->name, $excluded_items)) {
              $terms = get_terms($taxonomy->name);
              if ($terms) {
                foreach ($terms as $term) {
                  $sources[] = array('val' => '|' . $taxonomy->name . '|' . $term->term_id, 'label' => 'Latest content from ' . $term->name . ' (' . $taxonomy->labels->name . ')');
                } // foreach ($terms)
              } // if ($terms)
            } // if (!in_array)
          } // foreach ($taxonomies)
        } // if ($taxonomies)
    
        echo '<tr valign="top">
        <th scope="row"><label for="source">Slider Content</label></th>
        <td><select id="source" name="wf_fps[source]">';
          self::create_select_options($sources, $options['source']);
        echo '</select> It\'s expected from editors to manually choose what content is featured but you can automate the process by featuring chronologically latest content. Default: latest posts.</td>
        </tr>';
    
        $limit[] = array('val' => -1, 'label' => 'Unlimited');
        for ($i=1; $i <= 20; $i++) {
          $limit[] = array('val' => $i, 'label' => $i);
        }
        echo '<tr valign="top">
          <th scope="row"><label for="limit">Number of Slides</label></th>
        <td><select id="limit" name="wf_fps[limit]">';
        self::create_select_options($limit, $options['limit']);
        echo '</select> Number of posts shown in slider. If the number of "featured" posts is greater than "number of slides" the later will take precedence. Default: 5.
        </td></tr>';
    
        global $_wp_additional_image_sizes;
        $sizes[] = array('val'=> 'thumbnail', 'label' => 'Thumbnail, ' . get_option('thumbnail_size_w') . 'x' . get_option('thumbnail_size_h') . (get_option('thumbnail_crop')? ', cropped':''));
        $sizes[] = array('val'=> 'medium', 'label' => 'Medium, ' . get_option('medium_size_w') . 'x' . get_option('medium_size_h'));
        $sizes[] = array('val'=> 'large', 'label' => 'Large, ' . get_option('large_size_w') . 'x' . get_option('large_size_h'));
        if ($_wp_additional_image_sizes) {
          foreach ($_wp_additional_image_sizes as $tmp => $tmp2) {
            $sizes[] = array('val'=> $tmp, 'label' => $tmp . ', ' . $tmp2['width'] . 'x' . $tmp2['height'] . ($tmp2['crop']? ', cropped':''));
          }
        }
    
        echo '<tr valign="top">
          <th scope="row"><label for="thumbnail">Thumbnail Size</label></th>
        <td><select id="thumbnail" name="wf_fps[thumbnail]">';
        self::create_select_options($sizes, $options['thumbnail']);
        echo '</select> Select the size that best fits your site\'s layout and selected FPS layout. You can <a href="#additional-width">customize the FPS thumbnail</a> size. Thumbnail size can be chosen on a per-post basis while editing individual posts. Default: medium.
        </td></tr>';
    
        $img = plugins_url('/images/', __FILE__);
        $layouts[] = array('val' => 'layout-1', 'label' => 'Layout 1 - Large image with title on image bottom');
        $layouts[] = array('val' => 'layout-2', 'label' => 'Layout 2 - Thumbnail with content on right');
        $layouts[] = array('val' => 'layout-3', 'label' => 'Layout 3 - Medium image with content on right');
        $layouts[] = array('val' => 'layout-4', 'label' => 'Layout 4 - Large image with title above image ');
        $layouts[] = array('val' => 'layout-5', 'label' => 'Layout 5 - Thumbnail with content on left');
        $layouts[] = array('val' => 'layout-6', 'label' => 'Layout 6 - Medium image with content on left');
    
        echo '<tr valign="top">
        <th scope="row"><label>Layout</label></th>
        <td>
        <div class="layout-thumb"><label for="layout-1"><img src="' . $img . 'layout-image-full.png" alt="Layout 1" title="Layout 1" /></label><br /><input ' . checked('layout-1', $options['layout'], false) . ' type="radio" id="layout-1" name="wf_fps[layout]" value="layout-1" /> Large image with title on image bottom </div>
        <div class="layout-thumb"><label for="layout-2"><img src="' . $img . 'layout-image-left.png" alt="Layout 2" title="Layout 2" /></label><br /><input ' . checked('layout-2', $options['layout'], false) . ' type="radio" id="layout-2" name="wf_fps[layout]" value="layout-2" /> Thumbnail with content on right</div>
        <div class="layout-thumb"><label for="layout-3"><img src="' . $img . 'layout-image-left-short.png" alt="Layout 3" title="Layout 3" /></label><br /><input ' . checked('layout-3', $options['layout'], false) . ' type="radio" id="layout-3" name="wf_fps[layout]" value="layout-3" /> Medium image with content on right </div>
        <div class="layout-thumb"><label for="layout-4"><img src="' . $img . 'layout-image-full-top-title.png" alt="Layout 4" title="Layout 4" /></label><br /><input ' . checked('layout-4', $options['layout'], false) . ' type="radio" id="layout-4" name="wf_fps[layout]" value="layout-4" /> Large image with title above image </div>
        <div class="layout-thumb"><label for="layout-5"><img src="' . $img . 'layout-image-right.png" alt="Layout 5" title="Layout 5" /></label><br /><input ' . checked('layout-5', $options['layout'], false) . ' type="radio" id="layout-5" name="wf_fps[layout]" value="layout-5" /> Thumbnail with content on left</div>
        <div class="layout-thumb"><label for="layout-6"><img src="' . $img . 'layout-image-right-short.png" alt="Layout 6" title="Layout 6" /></label><br /><input ' . checked('layout-6', $options['layout'], false) . ' type="radio" id="layout-6" name="wf_fps[layout]" value="layout-6" /> Medium image with content on left</div><br style="clear: both;" />
    
        <input ' . checked('custom', $options['layout'], false) . ' type="radio" id="layout-custom" name="wf_fps[layout]" value="custom" /> <label for="layout-custom">Custom layout code</label>
        <textarea name="wf_fps[custom-layout]" id="custom-layout" style="width: 100%" rows="10" cols="20">' . $options['custom-layout'] . '</textarea><br />';
        echo '<p>Copy code from a predefined layout into the code editor:
        <select id="layouts-sel" name="layouts-sel">';
        self::create_select_options($layouts, '');
        echo '</select>
        <input type="button" value="Copy" class="button-secondary" name="copy" onclick="javascript:fps_copy_layout()" /></p>
        <p>The following 18 variables are available for use in custom layout code: (<a href="#" onclick="javascript:jQuery(\'#layout-variables\').toggle(); return false;">show variables</a>)</p>
        <ul id="layout-variables" style="list-style: circle inside; margin-left: 20px; display: none;">
         <li>{id} - post ID; ie: 34</li>
         <li>{permalink} - post permalink URL; ie: http://www.myweb.com/my-pos/</li>
         <li>{title} - post title; ie: My Nice Title</li>
         <li>{excerpt} - post excerpt with "the_excerpt" filter applied. If there\'s no excerpt an empty string is returned.</li>
         <li>{content-full} - complete post content with "the_content" filter applied.</li>
         <li>{content} - post content before the "<!--more-->" separator with "the_content" filter applied.</li>
         <li>{author} - post author "display name"; ie: John Doe</li>
         <li>{author-link} - URL to author\'s archive page; ie: http://www.myweb.com/author/john/</li>
         <li>{date} - post "published" date. Formatted using "date format" from <a href="options-general.php">Options - General</a>; ie: 2011/02/22</li>
         <li>{time} - post "published" time. Formatted using "time format" from <a href="options-general.php">Options - General</a>; ie: 8:22 am</li>
         <li>{comments-count} - total comments count; ie: 25</li>
         <li>{categories} - comma separated list of category links</li>
         <li>{tags} - comma separated list of tag links</li>
         <li>{thumbnail} - thumbnail <IMG> HTML element complete with src, width, height and default WP CSS classes.</li>
         <li>{thumbnail-src} - thumbnail file URL</li>
         <li>{thumbnail-width} - thumbnail width in pixels; ie: 330.</li>
         <li>{thumbnail-height} - thumbnail height in pixels; ie: 330.</li>
         <li>{slider-width} - slider width you entered in <a href="#width">FPS options above</a>; ie: 700px.</li>
        </ul>
        <p>Layouts can be chozen on a per-post basis while editing individual posts. Default: layout 2.</p>
        </td></tr>';
    
        echo '</tbody></table>';
        echo '<p class="submit"><input type="submit" value="Save Changes" class="button-primary" name="Submit" /></p>';
    
        echo '<h3>Options</h3>';
    
        echo '<table class="form-table"><tbody>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="prev-next">Auto Generate Previous and Next Buttons</label></th>
        <td><input name="wf_fps[prev-next]" id="prev-next" ' . checked('1', $options['prev-next'], false) . ' value="1" type="checkbox" /> If checked previous and next buttons will be placed on left and right edges of the slider. Default: checked.</td>
        </tr>';
    
        $pagination[] = array('val' => '0', 'label' => 'No');
        $pagination[] = array('val' => '1', 'label' => 'Yes, in form of circles');
        $pagination[] = array('val' => '2', 'label' => 'Yes, in form of post thumbnails');
    
        echo '<tr valign="top">
        <th scope="row"><label for="pagination">Auto Generate Pagination</label></th>
        <td><select id="pagination" name="wf_fps[pagination]">';
        self::create_select_options($pagination, $options['pagination']);
        echo '</select> If checked pagination circles or thumbnails will be placed below the slider. Default: circles.</td>
        </tr>';
    
        $autoplay[] = array('val' => '0', 'label' => 'Disable autoplay');
        $autoplay[] = array('val' => '500', 'label' => 'Every 0.5 seconds');
        $autoplay[] = array('val' => '1000', 'label' => 'Every second');
        $autoplay[] = array('val' => '1500', 'label' => 'Every 1.5 seconds');
        for($i=2000; $i<=20000; $i+=500) {
          $autoplay[] = array('val' => $i, 'label' => 'Every ' . number_format($i/1000, 1) . ' seconds');
        }
        echo '<tr valign="top">
        <th scope="row"><label for="autoplay">Autoplay</label></th>
        <td><select id="autoplay" name="wf_fps[autoplay]">';
        self::create_select_options($autoplay, $options['autoplay']);
        echo '</select> Time between each automatic slide switch. Default: 5 seconds.</td>
        </tr>';
    
        $effects[] = array('val' => 'slide', 'label' => 'Slide');
        $effects[] = array('val' => 'fade', 'label' => 'Fade');
        echo '<tr valign="top">
        <th scope="row"><label for="effect">Transition Effect</label></th>
        <td><select id="effect" name="wf_fps[effect]">';
        self::create_select_options($effects, $options['effect']);
        echo '</select> Effect used for transitioning between slides. Default: slide.</td>
        </tr>';
    
        for($i=50; $i<=2000; $i+=50) {
          $speed[] = array('val' => $i, 'label' => $i . ' miliseconds');
        }
        echo '<tr valign="top">
        <th scope="row"><label for="effect-speed">Transition Effect Speed</label></th>
        <td><select id="effect-speed" name="wf_fps[effect-speed]">';
        self::create_select_options($speed, $options['effect-speed']);
        echo '</select> Duration of transition effect/animation in milliseconds. Default: 350 milliseconds.</td>
        </tr>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="hover-pause">Stop on Hover</label></th>
        <td><input name="wf_fps[hover-pause]" id="hover-pause" ' . checked('1', $options['hover-pause'], false) . ' value="1" type="checkbox" /> If checked autoplay will be stopped once user hovers over the slider. Default: checked.</td>
        </tr>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="randomize">Randomize</label></th>
        <td><input name="wf_fps[randomize]" id="randomize" ' . checked('1', $options['randomize'], false) . ' value="1" type="checkbox" /> Randomize slides order. By default they are orderd by publishing date, descending. Default: unchecked.</td>
        </tr>';
    
        echo '</tbody></table>';
        echo '<p class="submit"><input type="submit" value="Save Changes" class="button-primary" name="Submit" /></p>';
    
        echo '<h3>Advanced Options</h3>';
    
        echo '<table class="form-table"><tbody>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="include-css">Include CSS</label></th>
        <td><input name="wf_fps[include-css]" id="include-css" ' . checked('1', $options['include-css'], false) . ' value="1" type="checkbox" /> If you wrote your own CSS for slides or copy/pasted our CSS code into some other file then disable this option. Default: checked.</td>
        </tr>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="include-jquery">Include jQuery</label></th>
        <td><input name="wf_fps[include-jquery]" id="include-jquery" ' . checked('1', $options['include-jquery'], false) . ' value="1" type="checkbox" /> If your theme doesn\'t already have jQuery included enable this option. Default: unchecked.</td>
        </tr>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="include-slides">Include Slides JS</label></th>
        <td><input name="wf_fps[include-slides]" id="include-slides" ' . checked('1', $options['include-slides'], false) . ' value="1" type="checkbox" /> If your theme already has <a href="http://slidesjs.com/">Slides JS</a> included uncheck this option. Default: checked.</td>
        </tr>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="shortcode">Shortcode Name</label></th>
        <td><input type="text" id="shortcode" style="width: 80px;" class="small-text" name="wf_fps[shortcode]" value="' . $options['shortcode'] . '" />';
        echo ' Write only the shortcode name, without brackets. If the shortcode name you want is already taken you\'ll be notified after saving. Default: fps.</td>
        </tr>';
    
        echo '<tr valign="top">
        <th scope="row"><label for="additional-width">Additional Image Size</label></th>
        <td><input type="text" id="additional-width" style="width: 60px;" class="small-text" name="wf_fps[additional-width]" value="' . $options['additional-width'] . '" /> x <input type="text" id="additional-height" style="width: 60px;" class="small-text" name="wf_fps[additional-height]" value="' . $options['additional-height'] . '" /> px &nbsp;&nbsp;&nbsp; <label for="additional-crop">Crop to size</label>&nbsp; <input name="wf_fps[additional-crop]" id="additional-crop" ' . checked('1', $options['additional-crop'], false) . ' value="1" type="checkbox" /> ';
        echo '<br />If you need an additional image (thumbnail) size besides the <a href="options-media.php">default WordPress sizes</a> (thumbnail, medium, large) you can define it here. Please note: changes to image sizes are not "retroactive" meaning they will only affect newly uploaded images. Once the size is changed you have to re-build or re-upload the images. We suggest using <a href="http://codecanyon.net/item/image-sizes-manager/309402">Image Sizes Manager</a>. Default: 330x330px, cropped.</td>
        </tr>';
    
    if (!$options['thumbnail-width'] || !$options['thumbnail-height']) {
      $options['thumbnail-width'] = 50;
      $options['thumbnail-height'] = 50;
    }
    
        echo '<tr valign="top">
        <th scope="row"><label for="thumbnail-width">Pagination Thumbnail Image Size</label></th>
        <td><input type="text" id="thumbnail-width" style="width: 60px;" class="small-text" name="wf_fps[thumbnail-width]" value="' . $options['thumbnail-width'] . '" /> x <input type="text" id="thumbnail-height" style="width: 60px;" class="small-text" name="wf_fps[thumbnail-height]" value="' . $options['thumbnail-height'] . '" /> px';
        echo '<br />If you\'re using thumbnails for pagination please set the size that fits your theme and needs. Please note: changes to image sizes are not "retroactive" meaning they will only affect newly uploaded images. Once the size is changed you have to re-build or re-upload the images. We suggest using <a href="http://codecanyon.net/item/image-sizes-manager/309402">Image Sizes Manager</a>. Default: 50x50px, cropped.</td>
        </tr>';
    
        $conditionals[] = array('val' => '', 'label' => 'On all pages');
        $conditionals[] = array('val' => 'is_front_page', 'label' => 'Only if is_front_page()');
        $conditionals[] = array('val' => 'is_home', 'label' => 'Only if is_home()');
        $conditionals[] = array('val' => 'is_category', 'label' => 'Only if is_category()');
        $conditionals[] = array('val' => 'is_singular', 'label' => 'Only if is_singular()');
        $conditionals[] = array('val' => 'is_not_singular', 'label' => 'Only if is_not_singular()');
    
        echo '<tr valign="top">
        <th scope="row"><label for="conditional">Show Slider</label></th>
        <td><select id="conditional" name="wf_fps[conditional]">';
        self::create_select_options($conditionals, $options['conditional']);
        echo '</select> If you want FPS shown only on certain pages but you placed FPS code in ie <i>header.php</i> set this option to enable conditional display. Default: always display FPS.</td>
        </tr>';
    
        echo '</tbody></table>';
        echo '<p class="submit"><input type="submit" value="Save Changes" class="button-primary" name="Submit" /></p>';
    
        echo '</form></div>';
      } // options_page
    
      // generate HTML code for slider
      public function generate_html() {
        $out = '';
        $options = get_option('wf_fps');
    
        // show slider only in certain circumstances
        if ($options['conditional']) {
          if ($options['conditional']       == 'is_home' && !is_home()) {
            return;
          } elseif ($options['conditional'] == 'is_front_page' && !is_front_page()) {
            return;
          } elseif ($options['conditional'] == 'is_category' && !is_category()) {
            return;
          } elseif ($options['conditional'] == 'is_singular' && !is_singular()) {
            return;
          } elseif ($options['conditional'] == 'is_not_singular' && is_singular()) {
            return;
          }
        }
    
        $types = array('post', 'page');
        $post_types = get_post_types(array('public' => true, '_builtin' => false), 'object', 'and');
        if ($post_types) {
          foreach ($post_types  as $post_type ) {
            $types[] = $post_type->query_var;
          }
        } else {
          $post_types = array();
        }
    
        if ($options['source'] == '_featured') {
          $filter = array('numberposts' => $options['limit'],
                           'meta_key'   => '_fps_featured',
                           'meta_value' => 1,
                           'order'      => 'DESC',
                           'post_type'  => $types);
        } elseif (substr($options['source'], 0, 1) != '|') {
          $filter = array('numberposts' => $options['limit'],
                          'post_type'   => $options['source'],
                          'order'       => 'DESC',);
        } else {
          $source = explode('|', $options['source']);
          if ($source[1] == 'category') {
            $category = 'category';
          } else {
            $category = $source[1] . '_category';
          }
          $filter = array('numberposts' => $options['limit'],
                          'post_type'   => $types,
                          $category     => $source[2],
                          'order'       => 'DESC',);
    
        }
        if ($options['randomize']) {
          $filter['orderby'] = 'rand';
        } else {
          $filter['orderby'] = 'post_date';
        }
    
        $featured_posts = get_posts($filter);
    
        require('slider-layout-templates.php');
    
        $out .= '<div id="fps-container" style="width: ' . $options['width'] . '">';
        $out .= '<div class="fps-slides-container">';
        $slide_nb = 1;
        $pagination = '';
    
        foreach($featured_posts as $featured) {
          $pagination .= '<li><a href="">' . get_the_post_thumbnail($featured->ID, 'FPS pagination thumbnail', array('class' => 'fps-thumbnail-mini')) . '</a></li>';
    
          // $featured "is" $post
          // get per-post or global layout
          if (get_post_meta($featured->ID, '_fps_layout', true)) {
            $layout = get_post_meta($featured->ID, '_fps_layout', true);
          } else {
            $layout = $options['layout'];
          }
          if ($layout == 'custom') {
            $template = $options['custom-layout'];
          } else {
            $template = $layouts[$layout];
          }
    
          // get per-post or global thumbnail size
          if (get_post_meta($featured->ID, '_fps_thumbnail', true)) {
            $thumbnail_size = get_post_meta($featured->ID, '_fps_thumbnail', true);
          } else {
            $thumbnail_size = $options['thumbnail'];
          }
    
          $tags = get_the_tags($featured->ID);
          $tags2 = '';
          if ($tags)
            foreach($tags as $tag) {
              $tags2 .= '<a href="/tag/' . $tag->slug . '">' . $tag->name . '</a>, ';
            }
          $tags2 = trim($tags2, ', ');
    
          $content = $featured->post_content;
          if (strpos($content, '<!--more-->')) {
            $content = substr($content, 0, strpos($content, '<!--more-->')) . '  <a href="' . get_permalink($featured->ID) . '">(more...)</a>';
          }
          $content = apply_filters('the_content', $content);
    
          $thumbnail = get_post_thumbnail_id($featured->ID);
          $thumbnail = wp_get_attachment_image_src($thumbnail, $thumbnail_size);
    
          global $post;
          $post = $featured;
          $tmp = str_replace(array('{id}',
                                   '{permalink}',
                                   '{title}',
                                   '{excerpt}',
                                   '{content-full}',
                                   '{content}',
                                   '{author}',
                                   '{author-link}',
                                   '{date}',
                                   '{time}',
                                   '{comments-count}',
                                   '{categories}',
                                   '{tags}',
                                   '{thumbnail}',
                                   '{thumbnail-src}',
                                   '{thumbnail-width}',
                                   '{thumbnail-height}',
                                   '{slider-width}'),
                            array($featured->ID,
                                   get_permalink($featured->ID),
                                   $featured->post_title,
                                   apply_filters('the_excerpt', $featured->post_excerpt),
                                   apply_filters('the_content', $featured->post_content),
                                   $content,
                                   get_the_author_meta('display_name', $featured->post_author),
                                   get_author_posts_url($featured->post_author),
                                   get_the_date(''),
                                   get_the_time(''),
                                   (int) $featured->comments_count,
                                   get_the_category_list(', ', '', $featured->ID),
                                   $tags2,
                                   get_the_post_thumbnail($featured->ID, $thumbnail_size, array('class' => 'fps-thumbnail')),
                                   $thumbnail[0],
                                   $thumbnail[1],
                                   $thumbnail[2],
                                   $options['width']), $template);
    
         if ($slide_nb != 1) {
          $tmp_display = 'display: none; ';
         } else {
          $tmp_display = '';
         }
         $out .= '<div class="post fps-slide" style="' . $tmp_display . 'width: ' . $options['width'] . ';">' . $tmp . '</div>';
         $slide_nb++;
        } // foreach post
        $out .= '</div>';
    
        if ($options['pagination'] == 2) {
          $out .= '<ul class="fps-pagination thumb-pagination">' . $pagination . '</ul>';
        }
        $out .= "</div>\n";
    
        // include JS/CSS only if needed
        if ($featured_posts) {
          self::$do_footer = true;
        }
    
        return $out;
      } // generate_html
    
      // shortcode for FPS, just a wrapper
      function shortcode($options, $content) {
        return self::generate_html();
      } // shortcode
    
      // slides JS code for footer
      function wp_footer() {
        if (!self::$do_footer) {
          return;
        }
    
        $options = get_option('wf_fps');
        $preload_img = plugins_url('/images/preload.gif', __FILE__);
    
        if($options['include-css']) {
          $slides_css = plugins_url('/css/featured-posts-slider.css?v4', __FILE__);
          echo '<style type="text/css">@import url(' . $slides_css . ");</style>\n";
        }
    
        if($options['include-jquery']) {
          $jquery_js = plugins_url('/js/jquery-1.6.2.min.js', __FILE__);
          echo '<script type="text/javascript" src="' . $jquery_js . '"></script>' . "\n";
        }
    
        if($options['include-slides']) {
          $slides_js = plugins_url('/js/slides.min.jquery.js', __FILE__);
          echo '<script type="text/javascript" src="' . $slides_js . '"></script>' . "\n";
        }
    
        echo '<script type="text/javascript">' . "\n";
        echo 'jQuery(document).ready(function() {';
        echo "jQuery('#fps-container').slides({
                  preload: true,
                  preloadImage: '{$preload_img}',
                  container: 'fps-slides-container',
                  generateNextPrev: {$options['prev-next']},
                  next: 'fps-next',
                  prev: 'fps-prev',
                  pagination: true,
                  generatePagination: " . ($options['pagination'] == '1'? '1': '0') . ",
                  paginationClass: 'fps-pagination',
                  currentClass: 'current',
                  fadeSpeed: {$options['effect-speed']},
                  slideSpeed: {$options['effect-speed']},
                  start: 1,
                  effect: '{$options['effect']}',
                  randomize: 0,
                  play: {$options['autoplay']},
                  pause: {$options['autoplay']},
                  hoverPause: {$options['hover-pause']},
                  autoHeight: 1});";
        echo "\n});";
        echo "\n</script>\n";
      } // wp_footer
    
      // warning if [fps] shortcode is already taken
      public function warning() {
        $shortcode = get_option('wf_fps');
        $shortcode = $shortcode['shortcode'];
        echo '<div id="message-shortcode" class="error"><p><strong>Featured Posts Slider shortcode is not active!</strong> The shortcode [' . $shortcode . '] is already in use by another plugin. Please <a href="themes.php?page=wf-fps#shortcode">update the settings</a> and select a different shortcode.</p></div>';
      } // warning
    } // class wf_fps
    
    // template function, echoes slider code
    function the_featured_posts_slider() {
      echo wf_fps::generate_html();
    } // the_featured_posts_slider
    
    // template function, returns slider code
    function get_the_featured_posts_slider() {
      return wf_fps::generate_html();
    } // get_the_featured_posts_slider
    
    // hook Featured Posts Plugin
    add_action('init', array('wf_fps', 'init'));
    add_action('after_setup_theme', array('wf_fps', 'add_thumb_support'));
    ?>
  7. joseph.fedorowicz
    Member
    Posted 2 years ago #

    Sorry. I attached the full code for the slider above.

  8. bcworkz
    Member
    Posted 2 years ago #

    I should have suggested that you use pastebin for long code snippets.

    It's not clear if get_post_meta() is returning an array or not. First try this:

    $out .= "</div>\n";
    
        $out .= get_post_meta($post->ID, 'small', true);
    
        // include JS/CSS only if needed
        if ($featured_posts) {

    The first and last two lines are your existing code. I did not deduce everything needs to be concatenated to $out until now. If you are getting an array returned, try this instead:

    $out .= "</div>\n";
    
        $smalls = get_post_meta($post->ID, 'small', true);
        foreach($smalls as $small) {
            $out .= $small . "<br>\n";
        }
    
        // include JS/CSS only if needed
        if ($featured_posts) {

    The main goal is to get some sort of output, which should happen now. It still may need tweaking to get it looking right on your page.

  9. joseph.fedorowicz
    Member
    Posted 2 years ago #

    Thanks. I tried both and still get nothing. Just blank space.

    Do I have to add something else?

    Sorry, I feel like an idiot that I can't figure this out. I've never struggled with something so simple before.

  10. bcworkz
    Member
    Posted 2 years ago #

    I suspect get_post_meta() isn't returning anything. The basic logic is correct, time to start debugging to determine why nothing is output. Echo or printf different variables, followed by die() at strategic points, find where things aren't happening as they should. View the html source to check output, the browser often hides important output.

    Ensure debug and error reporting is on, to catch any silly syntax errors.

  11. joseph.fedorowicz
    Member
    Posted 2 years ago #

    I think I'm right there. I'm just getting an "Unexpected T String Error" when getting here.

    Here is the error:

    Parse error: syntax error, unexpected T_STRING in /home4/philahoo/public_html/wp-content/plugins/premium-featured-posts-slider/featured-posts-slider.php on line 727

    Here is what I have in there that is causing it. I don't know why I'd get that error:

    foreach($featured_posts as $featured) {
          $pagination .= '<li><a href="">' . get_the_post_thumbnail($featured->ID, 'FPS pagination thumbnail', array('class' => 'fps-thumbnail-mini')) . '</a><p><?php $small = get_post_meta($post->ID, 'small', true);
    echo $small;?></p></li>';

    Thanks again for all your help.

  12. joseph.fedorowicz
    Member
    Posted 2 years ago #

    Finally nailed it! I incorrectly added some PHP block.

    One last problem that I can probably figure out. The output is for the next post. So the first post's output is appearing on the second post...and so on. I can't tell if it doesn't appear to be a CSS issue as its the same under the page source.

    Thanks again for all your help.

  13. bcworkz
    Member
    Posted 2 years ago #

    I may have misunderstood the intent of the field. Maybe try moving the get_meta line up a few lines to just above

    $slide_nb++;
        } // foreach post

    For good measure, also change $post->ID to $featured->ID. Getting output of any sort is break through. It's now just a matter of moving it around until it ends up in the right place.

Topic Closed

This topic has been closed to new replies.

About this Topic