Categories
WordPress

Post Views for Jetpack

New week, new plugin! ?

This is once again a Jetpack add-on, and it’s also another good example of the things you can accomplish with the WordPress.com REST API: Post Views for Jetpack pulls data about your site’s stats, as well as stats for each one of your posts.

This is still a work in progress; I would love to know what you’d like in this plugin, and where you would like to display those post views. Open a new thread in the support forums to let me know!

Categories
WordPress

REST API for WordPress: what does it mean for you?

If you follow WordPress news, you’ve probably heard about the REST API already. We’ve been talking about it for years, and it’s been presented as a revolution within WordPress. That’s all great, but what does it mean in practice?

Categories
WordPress

Update to REST API Post Embeds: category and tag filters work again!

The past few weeks have been interesting. WordPress 4.7 is coming up, and everyone is talking about the WP REST API.

I took that opportunity to look at one of my plugins, REST API Post Embeds, and make sure it was compatible with the upcoming WordPress 4.7. It turns out it wasn’t!

Categories
WordPress

Manage your Custom Post Types on WordPress.com

I’ve talked about the WordPress.com REST API on this blog before. I even created a plugin allowing you to make use of it on your own site. This API powers WordPress.com, the desktop WordPress.com apps, and is used in more and more areas of the Jetpack plugin.

Did you know that API also allows you to manage your Custom Post Types via the WordPress.com interface?

Categories
WordPress

A custom theme for SyntaxHighlighter

I’ve used SyntaxHighlighter Evolved on that site for as long as I can remember. It was always my plugin of choice to display code on this site. I’ve played with other tools, like Prism.js or  Pastacode, but I’ve added so many code snippets to this site, it wouldn’t be easy to switch to something else now. Let’s see how I customized that plugin to fit my needs.

Categories
WordPress

Automating my local dev environment with Laravel Valet and WP-CLI

When I set up my new machine, I decided to get rid of MAMP and Vagrant, my previous local development tools of choice. While they worked well for me, I needed something a bit different. I need to be able to spin up a fresh installation of WordPress, run a few tests, and burn it all down a few minutes later.

A few months ago, I discovered Laravel Valet. Valet is a tool relying on Caddy and Dnsmasq, allowing you to spin up PHP projects in a few seconds. You can learn more about it here. It seemed like the perfect tool for me, so I decided to combine it with WP-CLI to quickly launch WordPress sites on my laptop.

Categories
Tutorials WordPress

Jetpack: Add Related Posts to your RSS feed

I got an interesting question in the Jetpack support forums today. Levy wanted to display Related Posts in their RSS feed.

Jetpack displays Related Posts at the bottom of single posts by default, but like with other modules, you can customize Related Posts. In this post, we’ll use the the_content filter and the raw Jetpack Related Posts class to build our own unordered list of Related Posts, and add it to the bottom of the post content in RSS feeds.

Quick note before we start:

  • You’ll want to add that code to a functionality plugin like this one.
  • Nothing will happen if you’re not using Jetpack and its Related Posts module.
/**
 * Add Jetpack Related Posts to RSS feed.
 *
 * @see https://wordpress.org/support/topic/2927523
 *
 * @param string $content Post content.
 */
function jeherve_related_posts_feed( $content ) {
    // Return early if we're not in the RSS feed.
    if ( ! is_feed() ) {
        return $content;
    }

    // If Jetpack and Related Posts are active, let's get started.
    if ( class_exists( 'Jetpack_RelatedPosts' ) && method_exists( 'Jetpack_RelatedPosts', 'init_raw' ) ) {
        $related = Jetpack_RelatedPosts::init_raw()
            ->set_query_name( 'jetpackme-shortcode' ) // Optional, name can be anything.
            ->get_for_post_id(
                get_the_ID(),
                array( 'size' => 3 )
            );

        if ( $related ) {
            $related_list = '';

            foreach ( $related as $result ) {
                // Get the related post IDs.
                $related_post_id = get_post( $result['id'] );

                /**
                 * From there you can do just about anything, using the post IDs.
                 *
                 * In this example, we'll build an unordered list.
                 */
                $related_list .= sprintf(
                    '<li><a title="%1$s" href="%2$s">%3$s</a></li>',
                    esc_attr( get_the_title( $related_post_id ) ),
                    get_permalink( $related_post_id ),
                    get_the_title( $related_post_id )
                );
            }

            /**
             * Let's wrap all those related posts in ul tags, and add that list to the end of our post content.
             *
             * We will also add a headline, but only if it was set to be displayed in your Jetpack Related Posts settings.
             */
            $related_options = Jetpack_Options::get_option( 'relatedposts' );
            if ( $related_options['show_headline'] ) {
                $headline = sprintf(
                    '<h3 class="jp-relatedposts-headline"><em>%s</em></h3>',
                    esc_html__( 'Related', 'jetpack' )
                );
            } else {
                $headline = '';
            }

            return sprintf(
                '%1$s%2$s<ul class="jp-relatedposts">%3$s</ul>',
                $content,
                apply_filters( 'jetpack_relatedposts_filter_headline', $headline ),
                $related_list
            );
        }

        return $content;
    }

    // Last fallback, just in case Jetpack and Related Posts aren't there anymore.
    return $content;
}
add_filter( 'the_content', 'jeherve_related_posts_feed' );
Categories
WordPress Work

Come see me at WordCamp Europe

Are you at WordCamp Europe this weekend? Come say hi, I am at the Jetpack booth! ? ☺ 

Categories
WordPress

REST API Post Embeds: alter API query based on custom shortcode parameter

I got an interesting question from @slotty7130 in the WordPress.org support forums today: they wanted to use the REST API Post Embeds plugin to display posts from one of their websites, but only in a specific language as defined in WPML.

Categories
WordPress Work

A week in Dublin

Working for Automattic is pretty great. I work from home, and also get to travel from time to time. After Hawaii, India, San Francisco, Spain, and a few other places, we decided to head to Dublin for a week to meet, and work on delivering better support for Jetpack, VaultPress, and Akismet users.