I haven’t figured out why WordPress is missing schedule post, but I wrote a script that is ran with crontab that notifies me when it happens.
<?php
include 'wp-load.php';
$total_missed_schedules = 0;
$blogs = crontab_get_blogs();
$output = '';
foreach($blogs as $blog) {
$blog_prefix = $wpdb->get_blog_prefix( $blog->blog_id );
$results = query_missed_schedules( $blog_prefix );
$total_missed_schedules += count($results);
$output .= ($blog->domain . ' (blog id:' . $blog->blog_id . ') missed schedules ' . count($results) . '<br />' . PHP_EOL);
if ($results) {
switch_to_blog( $blog->blog_id );
foreach ( $results as $row ) {
$output .= ("post_id: <a href='" . get_edit_post_link($row->ID) . "'>" . $row->ID . "</a> date: " . $row->post_date . " post_type: " . $row->post_type . "<br />" . PHP_EOL);
}
restore_current_blog();
}
}
echo $output;
if ($total_missed_schedules > 0 || isset($_GET['mailtest'])) {
$to = 'matt@thiessen.us';
$subject = 'Missed scheduled posts';
$text = '';
if(isset($_GET['cron_src'])) {
$text = 'cron ran from ' . $_GET['cron_src'];
$text .= '<br />wget http://thegazette.com/missed_pub_notifier.php<br /><br />';
}
add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
wp_mail($to, $subject . " (wp_mail)", $text . $output);
}
function query_missed_schedules( $blog_prefix ) {
global $wpdb;
$sql = "SELECT ID, post_date, post_date_gmt, post_type, post_title FROM " . $blog_prefix . "posts WHERE post_status = 'future' AND post_date_gmt <= UTC_TIMESTAMP();";
$results = $wpdb->get_results($sql);
return $results;
}
function crontab_get_blogs() {
global $wpdb;
$sql = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE deleted = 0 AND archived = '0' ORDER BY domain, path";
$results = $wpdb->get_results($sql);
return ($results);
}
?>
functions.php
function get_page_parents( $id=0, $separator="/" ){
$itisme=get_post($id);
$lineage = '<span>'.$itisme->post_title.'</span>';
$parentID=$itisme->post_parent;
while( $parentID != 0 ){
$parent=get_post($parentID);
$lineage='<a href="' . get_permalink($parent->ID) . '">' . $parent->post_title . '</a>'.$separator.$lineage;
$parentID=$parent->post_parent;
}
return $lineage;
}
include 'includes/breadcrumb-styles.php';
add_action('wp_head', 'add_breadcrumb_styles');
page.php
<?php get_template_part( 'nav', 'above-page' ); ?>
nav-above-page.php
<div id="page-bread-crumbs"> <a class="home" href="/">Home</a> > <?php echo get_page_parents( $post->ID, " > " ) ?> </div>
includes/breadcrumb-styles.php
<?php
global $eia_parents;
$eia_parents = array();
function build_menu_style( $menu_name, $color, $locations ) {
global $eia_parents;
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menu_items = wp_get_nav_menu_items($menu->term_id);
$page_ids = array();
foreach ( (array) $menu_items as $key => $menu_item ) {
$page_id = $menu_item->object_id;
echo '/* ' . $menu_item->title . ' */' . PHP_EOL;
echo '.page-id-'.$page_id.' #page-bread-crumbs a,' . PHP_EOL;
echo '.page-id-'.$page_id.' #page-bread-crumbs span {color:'.$color.';}' . PHP_EOL;
if( $menu_item->post_parent && !array_key_exists( 'post_parent_id_'.$menu_item->post_parent, $eia_parents ) ) {
array_push( $eia_parents, array( 'post_parent_id_'.$menu_item->post_parent => array('ID' => $menu_item, 'color' => $color ) ) );
}
}
$page_ids = null;
}
function add_breadcrumb_styles() { ?><style type="text/css"><?php
global $eia_parents;
echo PHP_EOL;
$color1 = '#A08A42 /* book a flight (tan) */'; // tan /* book a flight */
$color2 = '#4AAAD6 /* check a flight (blue) */'; // blue /* check a flight */
$color3 = '#B25029 /* at the airport (burnt) */'; // burnt /* at the airport */
$color4 = '#40847A /* about the airport (green) */'; // green /* about the airport */
// update this array with the menus you wish to add styles from
$menu_locations = array(
"home-subnav-1" => $color1,
"home-subnav-2" => $color2,
"home-subnav-3" => $color3,
"home-subnav-4" => $color4
);
$locations = get_nav_menu_locations();
foreach( $menu_locations as $menu_name => $color ):
if ( ( $locations ) && isset( $locations[ $menu_name ] ) ) {
build_menu_style( $menu_name, $color, $locations );
}
endforeach;
foreach ($eia_parents as $parent):
echo PHP_EOL . '/* ' . get_the_title( $parent_id ) . ' */' . PHP_EOL;
echo '.parent-pageid-'.$parent['ID'].' #page-bread-crumbs a,' . PHP_EOL;
echo '.parent-pageid-'.$parent['ID'].' #page-bread-crumbs span {color:'.$parent['color'].';}' . PHP_EOL. PHP_EOL;
endforeach;
?></style><?php } ?>
Problem
In WordPress at least for custom links, it would be great to allow menu options to open in a new window/tab via the target=”_blank” element in the link tags. Controlling menus in the WP Menu tool is awesome, but many of the sites I work with have external links in the main navigation menus that need to open in a new tab.
Solution
jQuery('a[title="_blank"]').each(
function(i) {
jQuery(this).attr('target', '_blank');
jQuery(this).attr('title', jQuery(this).text());
}
);
Result
<a title=”_blank” href=”http://www2.allegiantair.com/”>Allegiant Air</a>
turns into
<a title=”Allegiant Air” href=”http://www2.allegiantair.com/” target=”_blank”>Allegiant Air</a>
How to remove index.php from the URL of a new install Magento Store
sudo vi .htaccess
uncomment
# RewriteBase /magento/
and change it to
RewriteBase /
Since I had a newly install version of Ubuntu web server, I needed to enable ModRewrite in apache
sudo a2enmod rewrite
Then you need to restart apache
sudo /etc/init.d/apache2 restart
Then goto your admin panel and enable the Rewrites. You can find it at System->Configuration->Web->Search Engine Optimization
Then goto Cache management page (system cache management ) and refresh your cache and refresh the Web Rewrites.
Improve your search engine rankings while drudging up memories of your science class.
Now that modern browsers are starting to support some of the really useful parts of HTML5 and CSS3, it’s time for our best practices to catch up, and we thought we’d put our files out there for everyone to use. By no means do we see this as the One True Way to start every project, but we think it’s a good starting place that anyone can make their own.
TextExt is a modern jQuery plugin for improving the functionality of text input fields as tag input and autocomplete.
jQuery OrgChart is a plugin that allows you to render structures with nested elements in a easy-to-read tree structure. To build the tree all you need is to make a single line call to the plugin and supply the HTML element Id for a nested unordered list element that is representative of the data you’d like to display.
When adding another domain to my Magento store I needed to modify the .htaccess file:
RewriteCond %{HTTP_HOST} ^shop.theblueberrypartnership.com
RewriteRule ^ - [E=MAGE_RUN_CODE:shop_theblueberrypartnership_com]
RewriteCond %{HTTP_HOST} ^shop.theblueberrypartnership.com
RewriteRule ^ - [E=MAGE_RUN_TYPE:website]