Expose entry IDs
-
Can you expose individual entry IDs in the list of terms when looking at a directory in the WordPress backend.
Then, making the individual IDs of individual terms obvious, it would be possible to add a shortcode to embed individual terms in any location on the website.
Something like:[name_directory_name id=”100″]
-
Oh, that’s nice. I’m actually marked as ‘Plugin contributor’. ??
Yes, you are ??
I can expose the ID for this. It’s not something that would be close to my usergroup, but having that extra shortcode doesn’t hurt ??
As always, I don’t know when it will be ready, but I’ll work on it.
Thanks again.
Kind regards, Jeroen Peters
Here’s the code for the table listing the names in a directory:
<table class="wp-list-table widefat name_directory_names fixed" cellpadding="0"> <thead> <tr> <th width="5%"><?php echo __('ID', 'name-directory'); ?></th> <th width="5%"><?php echo __('Name', 'name-directory'); ?></th> <th width=""><?php echo __('Description', 'name-directory'); ?></th> <th width="5%"><?php echo __('Submitter', 'name-directory'); ?></th> <th width="10%"><?php echo __('Published', 'name-directory'); ?></th> <th width="10%"><?php echo __('Manage', 'name-directory'); ?></th> </tr> </thead> <tbody> <?php if(empty($name)) { echo sprintf("<tr class='empty-directory'><td colspan='5'>%s</td></tr>", __('Currently, there are no names in this directory..', 'name-directory')); } foreach($names as $name) { if(is_array($name)) { $name = (object)$name; } echo sprintf(" <tr> <td>%s</td><td>%s</td><td>%s</td><td>%s</td><td><span title='%s' class='toggle_published' id='nid_%d' data-nameid='%d'>%s</span></td> <td><a class='button button-primary button-small' href='" . $wp_url_path . "&edit_name=%d#anchor_add_form'>%s</a> <a class='button button-small' href='" . $wp_url_path . "&delete_name=%d'>%s</a> </td> </tr>", $name->id, $name->name, html_entity_decode(stripslashes($name->description)), $name->submitted_by, __('Toggle published status', 'name-directory'), $name->id, $name->id, name_directory_yesno($name->published), $name->id, __('Edit', 'name-directory'), $name->id, __('Delete', 'name-directory')); } ?> </tbody> </table>
Here’s the function picking up one name by id:
function name_directory_get_name($id) { global $wpdb; global $name_directory_table_directory_name; $id = (int)$id; $names = $wpdb->get_results(sprintf(" SELECT * FROM %s WHERE <code>id</code> = $id", ARRAY_A ); return $names; }
And here’s the shortcode:
function name_directory_show_name($attributes) { $dir = null; extract(shortcode_atts( array('id' => '0'), $attributes )); $names = name_directory_get_name($attributes["id"]); if (count($names) > 0) { $entry = (array)$names[0]; $directory = name_directory_get_directory_properties($entry["directory"]); ob_start(); echo '<div class="name_directory_name">'; echo '<div class="name_directory_name_box">'; echo '<a name="namedirectory_' . sanitize_html_class($entry['name']) . '"></a>'; echo '<strong>' . htmlspecialchars($entry['name']) . '</strong>'; if(! empty($directory['show_description']) && ! empty($entry['description'])) { $print_description = html_entity_decode(stripslashes($entry['description'])); /* This toggles the read more/less indicators, these need extra html */ if(! empty($directory['nr_words_description'])) { $num_words = intval($directory['nr_words_description']); $short_desc = name_directory_get_words($print_description, $num_words); $print_description = str_replace($short_desc, "", $print_description); if(! empty($print_description)) { echo '<br /><div> <input type="checkbox" class="name-directory-readmore-state" id="name-' . htmlspecialchars($entry['id']) . '" /> <span class="name-directory-readmore-wrap">' . $short_desc . ' <span class="name-directory-readmore-target">' . $print_description .'</span></span> <label for="name-' . htmlspecialchars($entry['id']) . '" class="name-directory-readmore-trigger"></label> </div>'; } else { echo '<br /><div>' . $short_desc . '</div>'; } } else { echo '<br /><div>' . $print_description . '</div>'; } } if(! empty($directory['show_submitter_name']) && ! empty($entry['submitted_by'])) { echo "<small>" . __('Submitted by:', 'name-directory') . " " . $entry['submitted_by'] . "</small>"; } echo '</div>'; echo '</div>'; return ob_get_clean(); } } add_shortcode('namedirectory_name', 'name_directory_show_name');
- This reply was modified 5 years, 9 months ago by Babak Fakhamzadeh.
Hi @mastababa,
thanks for your contribution, but I’m already on the way of implementing this. Instead of copypasting everything, I at least want to combine the random function with the single one. I am testing already, but don’t have an ETA yet.
Kind regards,
Jeroen Peters
Great!
Hi @mastababa, This was implemented in v1.13!
As of now, you can use
[namedirectory_single]
, to display a single name entry on the website.Excellent!
That requires a parameter, no? So, [namedirectory_single id=1]?
Hey @mastababa sorry for my late reply, but you are correct! ??
- The topic ‘Expose entry IDs’ is closed to new replies.