Skip to content

Instantly share code, notes, and snippets.

View jdevalk's full-sized avatar
😀

Joost de Valk jdevalk

😀
View GitHub Profile
@jdevalk
jdevalk / archive-wpseo_locations.php
Created December 3, 2013 11:31
Easily create a custom post type archive page such as demoed on [the Yoast Local SEO demo site](http://local.yoastdemo.com/locations/) using this file:
<?php
/** Replace the standard loop with our custom Locations loop */
remove_action( 'genesis_loop', 'genesis_do_loop' );
add_action( 'genesis_loop', 'wpseo_locations_archive_loop' );
function wpseo_locations_archive_loop() {
echo '<h1>Locations</h1>';
echo '<div class="entry-content"><p>Your intro text here.</p></div>';
$args = array(
@jdevalk
jdevalk / gist:6635587
Last active December 23, 2015 12:29
How to die(); without NextGen Gallery annoying you with more output.
<?php
/**
* Prevent stupid plugins from running shutdown scripts when we're obviously not outputting HTML.
*/
function really_die() {
global $wp_filter;
unset( $wp_filter['wp_footer'], $wp_filter['shutdown'] );
$wp_filter['wp_footer'] = 1;
die();
}
@jdevalk
jdevalk / gist:6234102
Last active December 21, 2015 02:19
Make EDD work with NGINX
<?php
/**
* Make sure EDD doesn't trip over the NGINX values of global server settings and returns the proper current page URL.
*
* @param string $url The current page URL
* @return string The fixed current page URL.
*/
function yst_fix_edd_current_page_url( $url ) {
if ( is_front_page() ) :
$page_url = home_url();
@jdevalk
jdevalk / EDD_AJAX_non_ssl_filter.php
Created August 14, 2013 09:36
Make sure the AJAX URL for EDD uses the protocol for the current page, either http or https, as it doesn't work otherwise.
<?php
/**
* Make sure the AJAX URL for EDD uses the protocol for the current page, either http or https, as it doesn't work otherwise.
*
* @param string $ajaxurl The current ajaxurl
*
* @return string
*/
function yst_filter_edd_ajax_url( $ajaxurl ) {
@jdevalk
jdevalk / discount_url.php
Created August 14, 2013 09:34
Allow specification of a discount coupon through the URL, this means we can do away with the coupon field in the checkout process.
<?php
/**
* Allow people to specify a coupon code in the URL, and add it to their cart.
*/
function yst_edd_discount_link() {
if ( isset( $_GET['coupon'] ) ) {
// Check whether it's a valid coupon, if so, add it to the cart.
if ( edd_is_discount_valid( $_GET['coupon'] ) )
edd_set_cart_discount( $_GET['coupon'] );
@jdevalk
jdevalk / gist:5917169
Last active December 19, 2015 07:09
Add this to your functions.php to make WP SEO work with qTranslate, per this thread: http://wordpress.org/support/topic/plugin-wordpress-seo-by-yoast-compatibility-with-qtranslate?replies=24#post-3797599
<?php
/**
* Enable qTranslate for WordPress SEO
*
* @param string $text The string to translate
*
* @return string
*/
function qtranslate_filter( $text ) {
@jdevalk
jdevalk / functions.php
Last active December 18, 2015 00:29
Pushes the WordPress SEO metabox below the ACF metabox. Put the code below in your theme's functions.php or in your functionality plugin:
<?php
/**
* Adds a bit of JS that moves the meta box for WP SEO below the ACF box.
*/
function move_yoast_seo_below_acf_js() {
?>
<script type="text/javascript">
jQuery(document).ready(function ($) {
if ( $('.acf_postbox').length > 0 && $('#wpseo_meta').length > 0 ) {
@jdevalk
jdevalk / archive-speaking_event.php
Last active December 12, 2021 20:13
Genesis helper code for schema
<?php
add_filter( 'genesis_attr_content', 'yoast_schema_empty', 20 );
add_filter( 'genesis_attr_entry', 'yoast_schema_event', 20 );
add_filter( 'genesis_attr_entry-title', 'yoast_itemprop_name', 20 );
add_filter( 'genesis_attr_entry-content', 'yoast_itemprop_description', 20 );
add_filter( 'genesis_post_title_output', 'yoast_title_link_schema', 20 );
/**
* We'll use the post info output to add more meta data about the event.
@jdevalk
jdevalk / author-itemprop.php
Last active January 17, 2023 09:58
Bits of schema that require non-schema filters right now, for which I've written these functions
<?php
// For pages where you'd rather not have 20 rel=authors and in fact *do* need itemprop=author
// For instance on http://yoast.com/review/
function yoast_author_schema( $output ) {
return str_replace( 'rel="author"', 'itemprop="author"', $output );
}
add_filter( 'genesis_post_author_posts_link_shortcode', 'yoast_author_schema', 20 );
@jdevalk
jdevalk / gist:5623050
Created May 21, 2013 20:39
Redirect script sample NGINX code. Make sure this location line sits above the "location /" code in your NGINX config.
location /redirect/ {
rewrite ^/redirect/(.*)$ /redirect/index.php?id=$1 last;
}