Comparing post publish date to "one month ago" unix time - wordpress

I'm stuck on a problem and thought maybe I'm missing something basic. I'm making a function in WordPress that lists posts with a publish date of less than one month from "now". I do this by subtracting 2419200 (30 days) from the current time, using time(). Then I get posts which are > 30 days ago. However, my function interprets this range incorrectly and only serves up posts which are within a range of 2 weeks!
There is a lot going on in this function in addition to this problem, so I apologize, but follow the variables $range, $limit, and $publish_date for this issue. Notice that for testing purposes I set my variable to "monthly" manually at the start.
function send_archive() {
$range = 'monthly';
$now = time();
switch ($range) {
case 'monthly' :
$limit = ($now - 2419200); // 30 days
break;
case 'weekly' :
$limit = ($now - 604800);
break;
case 'daily' :
$limit = ($now - 86400);
break;
}
$post_types = get_post_types();
$posts = get_posts(array('post_type' => $post_types));
$all_users = get_users();
foreach ($all_users as $user) {
$excluded = excluded_admin( $user->user_login );
echo 'excluded is: ' . $excluded . '<br />';
echo 'user_login is: ' . $user->user_login . '<br />';
if ( $excluded != 'excluded' ) {
$frequency = get_user_meta($user->ID, 'iw_notify_frequency', true);
echo 'frequency is: ' . $frequency . '<br />';
echo 'Range is: ' . $range . '<br />';
echo 'Limit is: ' . date('D, d M Y H:i:s',$limit) . '<br />';
$posts_in_range = '';
$counter = 0;
$to = '';
$subject = '';
$headers = '';
if ($frequency == $range) {
$posts_in_range = get_option('iw-notify-greeting');
$posts_in_range .= '<p>' . strtoupper($range) . ' digest of posts from the City of Mukilteo</p>';
foreach ($posts as $post) {
$published_date = strtotime( $post->post_date_gmt );
$posts_in_range .= 'published_date: ' . $published_date. '<br />';
$posts_in_range .= 'limit: ' . $limit . '<br />';
$posts_in_range .= 'title: ' . $post->post_title . '<br />';
if ($published_date > $limit ) {
$match = has_user_selected_terms($user->ID, $post->ID);
if ($match != '') {
$headers = 'Content-type: text/html;charset=utf-8' . "\r\n";
$posts_in_range .= $post->post_title;
$posts_in_range .= ' - published ' . date('M, d', $published_date) . '<br />';
$posts_in_range .= $post->post_excerpt . '<br />';
$posts_in_range .= get_permalink($post->ID);
$posts_in_range .= '<br /><br />';
$counter++;
}
}
}
}
$posts_in_range .= get_option('iw-notify-unsubscribe') . '<br />----<br />';
if ( $counter != 0 ) {
$to = $user->user_email;
$subject = ucfirst($range) . ' archive from the City of Mukilteo';
$headers = 'Content-type: text/html;charset=utf-8';
$headers .= 'From: ' . get_option('from-name') . '<' . get_option('from-email') . '>' . "\r\n";
$content = $posts_in_range;
wp_mail($to, $subject, $content, $headers);
echo "Email sent to " . $user->display_name . '<br />';
echo $to . '<br />';
echo $subject .'<br />';
echo $headers . '<br />';
echo $posts_in_range . '<br />';
//echo $user->display_name . '<br />';
//echo $posts_in_range;
}
}
}
}

Instead of going all over your posts you can run a query using a date range
$args = array(
'date_query' => array(
array(
'column' => 'post_date_gmt',
'after' => '1 month ago',
)
),
'posts_per_page' => -1,
);
$query = new WP_Query( $args );
//DO YOUR STUFF WITH THE RESULTS
This query should return the post created in the last month.
More info about Date Parameters

Related

WP_mail attachment: An attachment was sent but it was not in the media library

I've a code snippet that builds an html email and send it towards a batch of users.
The email can contain one or multiple attachments.
Previously, my code was working fine, but since a few months the attachments are not sent anymore. More concrete, wordpress mail loggers tell me:
An attachment was sent but it was not in the media library
Below the code that handles the attachment, the rest of the email is working fine, headers are set to text/html
If I dump the path of the attachment in the mail an example is:
/home/lwk/domains/lintsewindklievers.be/public_html/wp-content/uploads/2022/10/CaveTriathlon_2021_111_RUN.gpx
I've no idea why this isn't working anymore..
Someone who might know what's going wrong?
function sentMail($rit, $maillist){
global $wpdb;
global $today;
$today = new DateTime();
$today = $today->format('Y-m-d');
$checkMail = FALSE;
$attachments = array();
// components for our email
$subject = "LWK Rit | ".date("d-m-Y h:i", strtotime($rit->datum_rit))." | ".$rit->post_title;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "'Content-Type: text/html; charset=UTF-8'";
//$headers .= "'Content-type: multipart/mixed; charset=iso-8859-1";
$headers .= "'From: De Lintse Windklievers <mail#lintsewindklievers.be>'";
$headers .= "'Reply-To: secretaris#lintsewindklievers.be'";
$message = '<html><body>';
$message .= '<img width="150" height="78" src="https://lintsewindklievers.be/wp-content/uploads/2021/05/Logo-LWK-scaled.jpg" alt="Website Change Request" />';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= "<tr><td><strong>Title</strong> </td><td>" . $rit->post_title . "</td></tr>";
$message .= "<tr><td><strong>Datum</strong> </td><td>" . date("d-m-Y h:i", strtotime($rit->datum_rit)) . "</td></tr>";
$message .= "<tr><td><strong>Afstand</strong> </td><td>" . $rit->afstand . "</td></tr>";
$message .= "<tr><td><strong>Organistie</strong> </td><td>" . $rit->organisatie . "</td></tr>";
$message .= "<tr><td><strong>Vertrekplaats:</strong> </td><td>" . $rit->vertrekplaats . "</td></tr>";
$message .= "<tr><td><strong>Stopplaats:</strong> </td><td>" . $rit->stopplaats . "</td></tr>";
$message .= "<tr><td><strong>Opmerkingen:</strong> </td><td>" . $rit->opmerkingen . "</td></tr>";
if (isset($rit->gpx_route)){
$aGPX = unserialize($rit->gpx_route);
foreach ( $aGPX as &$file){
$url = wp_get_attachment_url( $file );
$name = get_the_title($file);
$sGPX = "<a href='". $url ."'>" . $name . ".gpx</a>\n\n";
$message .= "<tr><td><strong>GPX:</strong> </td><td>" . $sGPX . "</td></tr>";
//echo $url;
$parsed = parse_url( wp_get_attachment_url( $file ) );
$urlx = dirname( $parsed [ 'path' ] ) . '/' . rawurlencode( basename( $parsed[ 'path' ] ) );
$urlx = substr($urlx, strpos($urlx, '/', 1));
array_push($attachments, WP_CONTENT_DIR . $urlx );
//$message .= "<tr><td><strong>GPX attachment:</strong> </td><td>" . WP_CONTENT_DIR . $urlx . "</td></tr>";
}
}
$message .= "</table>";
$message .= "</body></html>";
add_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
foreach( $maillist as $recepient ){
if(wp_mail( $recepient, $subject, $message, $headers, $attachments )){
$checkMail = TRUE;
}else{
$checkMail = FALSE;
}
}
if($checkMail){
$wpdb->update('wp_custom_ritten', array('notif_mail'=>$today), array('id'=>$rit->ID));
}
// Reset content-type to avoid conflicts -- https://core.trac.wordpress.org/ticket/23578
remove_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
}
function wpdocs_set_html_mail_content_type() {
return 'text/html';
}

Show star ratings in comments

I followed the steps in this article: cssigniter.com/add-rating-wordpress-comment-system to add a star rating to the comments system... but when I list the comments with the code below the stars are not showing up I have tried what seems like a million things and I can not seem to figure out why the stars are not showing up.
Here is the code I am using to pull the comments
if ( is_user_logged_in() ) {
$user_id = get_current_user_id(); $args = array( 'status' => 'approve', 'user_id' => $user_id );
$comments = get_comments($args);
foreach($comments as $comment) : echo '<p>';
$post_id = $comment->comment_post_ID;
$member_name = get_post( $comment->comment_post_ID );
echo ( ' <div style="color: #00205a;"> ' . mysql2date(get_option('date_format'), $comment->comment_date) . ' - </div>' . '<a style="color:#a27747;" href="' . get_permalink( $comment->comment_post_ID ) . '">' . $member_name->post_title . '</a><br />' . '(stars go here)' . '<br />' . $comment->comment_content ). '<br /><br />';
echo '</p>';
endforeach;
}
if ( is_user_logged_in() ) {
$user_id = get_current_user_id(); $args = array( 'status' => 'approve', 'user_id' => $user_id );
$comments = get_comments($args);
foreach($comments as $comment) : echo '<p>';
$member_name = get_post( $comment->comment_post_ID );
if ( $rating = get_comment_meta( $comment->comment_ID, 'rating', true ) ) {
$stars = '<p class="stars">';
for ( $i = 1; $i <= $rating; $i++ ) {
$stars .= '<span class="dashicons dashicons-star-filled"></span>';
}
$stars .= '</p>';
}
echo ( ' <div style="color: #00205a;"> ' . mysql2date(get_option('date_format'), $comment->comment_date) . ' - </div>' . '<a style="color:#a27747;" href="' . get_permalink( $comment->comment_post_ID ) . '">' . $member_name->post_title . '</a><br />'. $stars . '<br />' . $comment->comment_content ). '<br /><br />';
echo '</p>';
endforeach;
}

meta_key and meta_value put it in an array WP_User_Query in Wordpress

I want to display some information about the user using function new WP_User_Query
"umeta_id": "606",
"user_id": "18",
"meta_key": "facebook_login_data",
"meta_value": "a:24:{s:10:\"identifier\";s:16:\"XXXXX\";s:10:\"webSiteURL\";s:0:\"\";s:10:\"profileURL\";s:61:\"https://www.facebook.com/app_scoped_user_id/XXXXXX/\";s:8:\"photoURL\";s:72:\"https://graph.facebook.com/XXXXXX/picture?width=150&height=150\";s:11:\"displayName\";s:14:\"Osadchiy Yuriy\";s:11:\"description\";s:0:\"\";s:9:\"firstName\";s:5:\"Yuriy\";s:8:\"lastName\";s:8:\"Osadchiy\";s:6:\"gender\";s:4:\"male\";s:8:\"language\";s:5:\"ru_RU\";s:3:\"age\";N;s:8:\"birthDay\";i:25;s:10:\"birthMonth\";i:11;s:9:\"birthYear\";i:1988;s:5:\"email\";s:15:\"XXXX.com\";s:13:\"emailVerified\";s:15:\"XXXX.com\";s:5:\"phone\";N;s:7:\"address\";N;s:7:\"country\";N;s:6:\"region\";s:0:\"\";s:4:\"city\";N;s:3:\"zip\";N;s:9:\"job_title\";N;s:17:\"organization_name\";N;}"
How can I get the avatar of the user photoURL
I use this code:
$args = array(
'role' => 'Customer'
);
// The Query
$user_query = new WP_User_Query( $args );
// User Loop
if ( ! empty( $user_query->results ) ) {
foreach ( $user_query->results as $user ) {
echo '<p>' . $user->ID . '</p>';
echo '<p>' . $user->display_name . '</p>';
echo '<p>' . $user->user_email . '</p>';
echo '<p>' . $user->billing_phone . '</p>';
echo '<p>' . $user->billing_first_name . '</p>';
echo '<p>' . $user->billing_last_name . '</p>';
echo '<p>' . $user->facebook_login_data
}
}
I would be grateful for the help.
My decision:
$args = array(
'role' => 'Customer'
);
// The Query
$user_query = new WP_User_Query( $args );
// User Loop
if ( ! empty( $user_query->results ) ) {
foreach ( $user_query->results as $user ) {
echo '<p>' . $user->ID . '</p>';
echo '<p>' . $user->display_name . '</p>';
echo '<p>' . $user->user_email . '</p>';
echo '<p>' . $user->billing_phone . '</p>';
echo '<p>' . $user->billing_first_name . '</p>';
echo '<p>' . $user->billing_last_name . '</p>';
if ($user->facebook_login_data){
echo '<p>' . $user->facebook_login_data["profileURL"] .'</p>';
}
}
}

Bootstrap modal implementation in wordpress codex

I'm having a little hard time here implementing a modal view to display the post content rather than sending the user to another page.
I have this
function get_grid_archive_theme( $post, $archive_template = null ) {
$archive_template = isset( $archive_template ) ? $archive_template : get_product_listing_template();
$return = '';
if ( $archive_template == 'grid' ) {
$product_id = $post->ID;
$excerpt = get_the_excerpt( $product_id );
$post_content = get_the_content( $product_id );
$image_id = get_post_thumbnail_id( $product_id );
$thumbnail_product = wp_get_attachment_image_src( $image_id, 'classic-grid-listing' );
$product_name = get_product_name();
if ( $thumbnail_product ) {
$img_class[ 'alt' ] = $product_name;
$img_class[ 'class' ] = 'classic-grid-image';
$image = wp_get_attachment_image( $image_id, 'classic-grid-listing', false, $img_class );
} else {
$url = default_product_thumbnail_url();
$image = '<img src="' . $url . '" class="classic-grid-image default-image" alt="' . $product_name . '" >';
}
$archive_price = apply_filters( 'archive_price_filter', '', $post );
$classic_grid_settings = get_classic_grid_settings();
$row_class = get_row_class( $classic_grid_settings );
$return = '<div class="col-xs-12 col-sm-6 col-md-3 product-' . $product_id . ' classic-grid ' . $row_class . ' ">';
$return .= '<a data-toggle="modal" data-target="#' . $product_id . ' " href="#">';
//$return .= '<div style="background-image:url(\'' . $url . '\');" class="classic-grid-element"></div>';
$return .= '<div class="classic-grid-image-wrapper"><div class="pseudo"></div><div class="image">' . $image . '</div></div>';
$return .= '<div class="excerpt-cnt"><div class="excerpt-text">' . $excerpt . '</div></div><h3 class="product-name">' . $product_name . '</h3>' . $archive_price;
if ( $classic_grid_settings[ 'attributes' ] == 1 && function_exists( 'product_attributes_number' ) ) {
$attributes_number = product_attributes_number();
if ( $attributes_number > 0 && has_product_any_attributes( $product_id ) ) {
$max_listing_attributes = apply_filters( 'max_product_listing_attributes', $classic_grid_settings[ 'attributes_num' ] );
$return .= '<div class="product-attributes">';
$a = 0;
for ( $i = 1; $i <= $attributes_number; $i++ ) {
$attribute_value = get_attribute_value( $i, $product_id );
if ( !empty( $attribute_value ) ) {
$return .= '<div><span class="attribute-label-listing">' . get_attribute_label( $i, $product_id ) . ':</span> <span class="attribute-value-listing">' . get_attribute_value( $i, $product_id ) . '</span> <span class="attribute-unit-listing">' . get_attribute_unit( $i, $product_id ) . '</span></div>';
$a++;
}
if ( $a == $max_listing_attributes ) {
break;
}
}
$return .= '</div>';
}
}
$return .= '</a>';
$return .= apply_filters( 'classic_grid_product_listing_element', '', $product_id );
$return .= '</div>';
}
$return .= '<div id="' . $product_id . ' " class="modal" role="dialog">';
$return .= '<div class="modal-dialog"><div class="modal-content">';
$return .= '<div class="modal-header">';
$return .= '<h4 class="modal-title">' . $product_name .'</h4>';
$return .= '</div>';
$return .= '<div class="modal-body">';
$return .= '<p>' . $post_content .'</p>';
$return .= '</div>';
$return .= '<div class="modal-footer">';
$return .= '</div>';
$return .= '</div></div>';
$return .= '</div>';
return $return;
}
This code extracts a series of posts excerpts and displays them in a 4 column layout As the picture below depicts
Each one can be clicked and it will show the content of that post in a modal. Well the thing is, it just doesn't but the modal is loaded in the DOM because when I inspect the code there are no JS errors, and the modals are shown in the HTML but still as display:none;. If I click that off or change it to block manually in the web-dev tool the modal shows.
Bootstrap is loaded in the site too. What am I missing? Why doesn't the data-target toggle the display from none to block?
I think there is just a small space problem in your code, in the line below.
$return .= '<div id="' . $product_id . ' " class="modal" role="dialog">';
Remove the space before the close of id attribute, as given below.
$return .= '<div id="' . $product_id . '" class="modal" role="dialog">';
I hope this will help!

Wp nav menu breadcrumb without plugin

How can i create breadcrumb with using nav menu item title not page title using custom code without plugin in wordpress.?
Place this code in your functions.php file.
function the_breadcrumb() {
global $post;
echo '<ul id="breadcrumbs">';
if (!is_home()) {
echo '<li><a href="';
echo get_option('home');
echo '">';
echo 'Home';
echo '</a></li><li class="separator"> / </li>';
if (is_category() || is_single()) {
echo '<li>';
the_category(' </li><li class="separator"> / </li><li> ');
if (is_single()) {
echo '</li><li class="separator"> / </li><li>';
the_title();
echo '</li>';
}
} elseif (is_page()) {
if($post->post_parent){
$anc = get_post_ancestors( $post->ID );
$title = get_the_title();
foreach ( $anc as $ancestor ) {
$output = '<li>'.get_the_title($ancestor).'</li> <li class="separator">/</li>';
}
echo $output;
echo '<strong title="'.$title.'"> '.$title.'</strong>';
} else {
echo '<li><strong> '.get_the_title().'</strong></li>';
}
}
}
elseif (is_tag()) {single_tag_title();}
elseif (is_day()) {echo"<li>Archive for "; the_time('F jS, Y'); echo'</li>';}
elseif (is_month()) {echo"<li>Archive for "; the_time('F, Y'); echo'</li>';}
elseif (is_year()) {echo"<li>Archive for "; the_time('Y'); echo'</li>';}
elseif (is_author()) {echo"<li>Author Archive"; echo'</li>';}
elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {echo "<li>Blog Archives"; echo'</li>';}
elseif (is_search()) {echo"<li>Search Results"; echo'</li>';}
echo '</ul>';
}
add this <?php the_breadcrumb(); ?> anywhere you want to display the breadcrumbs. Enjoy.
You can use custom field for those pages and get that custom field in breadcrumb code.
Like this:
<div class="breadcrumb">
<?php if(is_home())
{
?>
Home
<?php
}
else
{
?>
Home-><?php echo $page_brdcrmb = get_post_meta(get_the_ID(), 'custom', true); ?>
<?php } ?>
</div>
If you write your own theme, this is an example to put in your functions.php, and add this code <?php my_breadcrumb(); ?> where you want in your template.
/*
Return the string menu title of a page
#Param : $id integrer page ID
#return: string menu page title or page title if not found
*/
function my_getmenu_title( $id) {
$title = get_the_title() ; // in case we don't found it
$menu = wp_get_nav_menu_object( 77 ); // Important this is your menu ID,
// should be better to find the active
// menu to be generic :-(
if( $menu ) {
$items = wp_get_nav_menu_items( $menu);
foreach ( (array) $items as $key => $menu_item ) {
if( $menu_item->object_id==$id ) {
$title = $menu_item->title;
break;
}
}
}
return $title;
}
/* custom breadcrumb */
function my_breadcrumb($title = false) {
global $pmc_data;
$breadcrumb = '';
if (!is_home()) {
if($title == false){
$breadcrumb .= '<a href="';
$breadcrumb .= home_url();
$breadcrumb .= '">';
$breadcrumb .= __('Home', 'mytheme');
$breadcrumb .= "</a> » ";
}
if (is_single()) {
if (is_single()) {
$name = '';
if(!get_query_var($pmc_data['port_slug']) && !get_query_var('product')){
$category = get_the_category(); +
$category_id = get_cat_ID($category[0]->cat_name);
$category_link = get_category_link($category_id);
$name = ''.$category[0]->cat_name .'';
}
else{
$taxonomy = 'portfoliocategory';
$entrycategory = get_the_term_list( get_the_ID(), $taxonomy, '', ',', '' );
$catstring = $entrycategory;
$catidlist = explode(",", $catstring);
$name = $catidlist[0];
}
if($title == false){
$breadcrumb .= $name .' » <span>'. get_the_title().'</span>';
}
else{
$breadcrumb .= get_the_title();
}
}
} elseif (is_page()) {
// This is where you call a special function to get menu title instead of page
$breadcrumb .= '<span>'.my_getmenu_title( get_the_ID()).'</span>';
}
elseif(get_query_var('portfoliocategory')){
$term = get_term_by('slug', get_query_var('portfoliocategory'), 'portfoliocategory'); $name = $term->name;
$breadcrumb .= '<span>'.$name.'</span>';
}
else if(is_tag()){
$tag = get_query_var('tag');
$tag = str_replace('-',' ',$tag);
$breadcrumb .= '<span>'.$tag.'</span>';
}
else if(is_search()){
$breadcrumb .= __('Search results for ', 'pmc-themes') .'"<span>'.get_search_query().'</span>"';
}
else if(is_category()){
$cat = get_query_var('cat');
$cat = get_category($cat);
$breadcrumb .= '<span>'.$cat->name.'</span>';
}
else if(is_archive()){
$breadcrumb .= '<span>'.__('Archive','mytheme').'</span>';
}
else{
$breadcrumb .= __('Home','mytheme');
}
if(function_exists('is_shop')){
if(is_product() || is_product_category() || is_shop()){
$breadcrumb = '';
woocommerce_breadcrumb();
}
}
}
return $breadcrumb ;
}
This is custom breadcrumb function without using any plugin in wordpress. It helps you,easy way to add breadcrumb on your page, Only need to add css as you required.
Function Callback:
<?php
custom_breadcrumbs();
?>
You need to add this function in functions.php
/*========== Breadcrumb ========== */
// Breadcrumbs
function custom_breadcrumbs() {
// Settings
$separator = '>';
$breadcrums_id = 'breadcrumbs';
$breadcrums_class = 'breadcrumbs';
$home_title = 'Homepage';
// If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
$custom_taxonomy = 'product_cat';
// Get the query & post information
global $post,$wp_query;
// Do not display on the homepage
if ( !is_front_page() ) {
// Build the breadcrums
echo '<ul id="' . $breadcrums_id . '" class="' . $breadcrums_class . '">';
// Home page
echo '<li class="item-home"><a class="bread-link bread-home" href="' . get_home_url() . '" title="' . $home_title . '">' . $home_title . '</a></li>';
echo '<li class="separator separator-home"> ' . $separator . ' </li>';
if ( is_archive() && !is_tax() && !is_category() && !is_tag() ) {
echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
} else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
// If post is a custom post type
$post_type = get_post_type();
// If it is a custom post type display name and link
if($post_type != 'post') {
$post_type_object = get_post_type_object($post_type);
$post_type_archive = get_post_type_archive_link($post_type);
echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
echo '<li class="separator"> ' . $separator . ' </li>';
}
$custom_tax_name = get_queried_object()->name;
echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . $custom_tax_name . '</strong></li>';
} else if ( is_single() ) {
// If post is a custom post type
$post_type = get_post_type();
// If it is a custom post type display name and link
if($post_type != 'post') {
$post_type_object = get_post_type_object($post_type);
$post_type_archive = get_post_type_archive_link($post_type);
echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
echo '<li class="separator"> ' . $separator . ' </li>';
}
// Get post category info
$category = get_the_category();
if(!empty($category) && !is_single()) {
// Get last category post is in
$last_category = end(array_values($category));
// Get parent any categories and create array
$get_cat_parents = rtrim(get_category_parents($last_category->term_id, true, ','),',');
$cat_parents = explode(',',$get_cat_parents);
// Loop through parent categories and store in variable $cat_display
$cat_display = '';
foreach($cat_parents as $parents) {
$cat_display .= '<li class="item-cat">'.$parents.'</li>';
$cat_display .= '<li class="separator"> ' . $separator . ' </li>';
}
}
// If it's a custom post type within a custom taxonomy
$taxonomy_exists = taxonomy_exists($custom_taxonomy);
if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
$taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
$cat_id = $taxonomy_terms[0]->term_id;
$cat_nicename = $taxonomy_terms[0]->slug;
$cat_link = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
$cat_name = $taxonomy_terms[0]->name;
}
// Check if the post is in a category
if(!empty($last_category)) {
echo $cat_display;
echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
// Else if post is in a custom taxonomy
} else if(!empty($cat_id)) {
echo '<li class="item-cat item-cat-' . $cat_id . ' item-cat-' . $cat_nicename . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $cat_nicename . '" href="' . $cat_link . '" title="' . $cat_name . '">' . $cat_name . '</a></li>';
echo '<li class="separator"> ' . $separator . ' </li>';
echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
} else {
echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
}
} else if ( is_category() ) {
// Category page
echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
} else if ( is_page() ) {
// Standard page
if( $post->post_parent ){
// If child page, get parents
$anc = get_post_ancestors( $post->ID );
// Get parents in the right order
$anc = array_reverse($anc);
// Parent page loop
foreach ( $anc as $ancestor ) {
$parents .= '<li class="item-parent item-parent-' . $ancestor . '"><a class="bread-parent bread-parent-' . $ancestor . '" href="' . get_permalink($ancestor) . '" title="' . get_the_title($ancestor) . '">' . get_the_title($ancestor) . '</a></li>';
$parents .= '<li class="separator separator-' . $ancestor . '"> ' . $separator . ' </li>';
}
// Display parent pages
echo $parents;
// Current page
echo '<li class="item-current item-' . $post->ID . '"><strong title="' . get_the_title() . '"> ' . get_the_title() . '</strong></li>';
} else {
// Just display current page if not parents
echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '"> ' . get_the_title() . '</strong></li>';
}
} else if ( is_tag() ) {
// Tag page
// Get tag information
$term_id = get_query_var('tag_id');
$taxonomy = 'post_tag';
$args = 'include=' . $term_id;
$terms = get_terms( $taxonomy, $args );
$get_term_id = $terms[0]->term_id;
$get_term_slug = $terms[0]->slug;
$get_term_name = $terms[0]->name;
// Display the tag name
echo '<li class="item-current item-tag-' . $get_term_id . ' item-tag-' . $get_term_slug . '"><strong class="bread-current bread-tag-' . $get_term_id . ' bread-tag-' . $get_term_slug . '">' . $get_term_name . '</strong></li>';
} elseif ( is_day() ) {
// Day archive
// Year link
echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</a></li>';
echo '<li class="separator separator-' . get_the_time('Y') . '"> ' . $separator . ' </li>';
// Month link
echo '<li class="item-month item-month-' . get_the_time('m') . '"><a class="bread-month bread-month-' . get_the_time('m') . '" href="' . get_month_link( get_the_time('Y'), get_the_time('m') ) . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ' Archives</a></li>';
echo '<li class="separator separator-' . get_the_time('m') . '"> ' . $separator . ' </li>';
// Day display
echo '<li class="item-current item-' . get_the_time('j') . '"><strong class="bread-current bread-' . get_the_time('j') . '"> ' . get_the_time('jS') . ' ' . get_the_time('M') . ' Archives</strong></li>';
} else if ( is_month() ) {
// Month Archive
// Year link
echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</a></li>';
echo '<li class="separator separator-' . get_the_time('Y') . '"> ' . $separator . ' </li>';
// Month display
echo '<li class="item-month item-month-' . get_the_time('m') . '"><strong class="bread-month bread-month-' . get_the_time('m') . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ' Archives</strong></li>';
} else if ( is_year() ) {
// Display year archive
echo '<li class="item-current item-current-' . get_the_time('Y') . '"><strong class="bread-current bread-current-' . get_the_time('Y') . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ' Archives</strong></li>';
} else if ( is_author() ) {
// Auhor archive
// Get the author information
global $author;
$userdata = get_userdata( $author );
// Display author name
echo '<li class="item-current item-current-' . $userdata->user_nicename . '"><strong class="bread-current bread-current-' . $userdata->user_nicename . '" title="' . $userdata->display_name . '">' . 'Author: ' . $userdata->display_name . '</strong></li>';
} else if ( get_query_var('paged') ) {
// Paginated archives
echo '<li class="item-current item-current-' . get_query_var('paged') . '"><strong class="bread-current bread-current-' . get_query_var('paged') . '" title="Page ' . get_query_var('paged') . '">'.__('Page') . ' ' . get_query_var('paged') . '</strong></li>';
} else if ( is_search() ) {
// Search results page
echo '<li class="item-current item-current-' . get_search_query() . '"><strong class="bread-current bread-current-' . get_search_query() . '" title="Search results for: ' . get_search_query() . '">Search results for: ' . get_search_query() . '</strong></li>';
} elseif ( is_404() ) {
// 404 page
echo '<li>' . 'Error 404' . '</li>';
}
echo '</ul>';
}
}

Resources