Skip to content

Instantly share code, notes, and snippets.

View mklasen's full-sized avatar

Marinus Klasen mklasen

View GitHub Profile
<?php
add_action( 'cmb2_admin_init', function() {
$prefix = 'mk_add_thickbox_';
$metabox = new_cmb2_box( array(
'id' => $prefix.'box',
'title' => 'Signature',
'object_types' => array( 'post', ),
) );
$metabox->add_field( array(
@mklasen
mklasen / functions.php
Created January 18, 2017 11:54
WordPress: Wrap content output in a div
<?php
add_action('loop_start', function() {
// Only for archive
if (is_archive()) {
echo '<!--- Start loop wrap --><div class="wrap">';
}
});
add_action('loop_end', function() {
// Only for archive
if (is_archive()) {
@mklasen
mklasen / order.terms.php
Last active January 24, 2017 15:46
Influence order for parent terms
// Set program archive to order on post meta date/time
add_action('pre_get_posts', function($query) {
// Order on time
$query->set( 'meta_key', 'start_time' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'ASC' );
});
@mklasen
mklasen / order.archive.php
Created January 24, 2017 15:45
Order posts in archive page based on child terms
add_filter( 'posts_clauses', function( $pieces, $obj ) {
global $wpdb;
$pieces['join'] .= " LEFT JOIN `$wpdb->term_relationships` AS trs ON ($wpdb->posts.ID = trs.object_id)";
$pieces['join'] .= " LEFT JOIN `$wpdb->term_taxonomy` AS tt ON (trs.term_taxonomy_id = tt.term_taxonomy_id)";
$pieces['join'] .= " LEFT JOIN `$wpdb->terms` AS t ON (tt.term_id = t.term_id)";
$pieces['join'] .= " LEFT JOIN `$wpdb->term_taxonomy` AS parent ON (parent.parent = trs.term_taxonomy_id)";
$pieces['join'] .= " LEFT JOIN `$wpdb->terms` AS parent_terms ON (parent.term_id = parent_terms.term_id)";
$pieces['where'] .= " AND (tt.taxonomy = '*YOUR_TAXONOMY*')";
@mklasen
mklasen / mk.rest.api.endpoint.php
Last active April 28, 2017 13:47
Add WordPress REST API Endpoint
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => function($request) {
print_r($request->get_params());
},
) );
} );
@mklasen
mklasen / remove.version.numbers.php
Created February 6, 2017 13:12
Remove version numbers from enqueues
// Used mainly for live reload with Chrome workspaces
add_filter( 'style_loader_src', 'mk_remove_version_numbers', 9999 );
add_filter( 'script_loader_src', 'mk_remove_version_numbers', 9999 );
function mk_remove_version_numbers( $src ) {
if ( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
@mklasen
mklasen / remove.other.images.in.media.php
Last active September 12, 2017 11:31
Hide images where user is not an author of in media library
// Only show images owned by user
add_filter( 'ajax_query_attachments_args', function ( $query ) {
$query['author'] = get_current_user_id();
return $query;
});
@mklasen
mklasen / ajax.upload.js
Created February 11, 2017 12:30
Upload files to WordPress with ajax via REST API
var data = new FormData()
// Add data/files to formdata var
jQuery.ajax({
url: wpApiSettings.root + 'routehere/v1/subroute/save',
type: 'POST',
beforeSend: function(xhr) {
xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );
},
@mklasen
mklasen / woocommerce.emails.php
Last active February 21, 2017 09:31
Use Woocommerce's email function and templates to send e-mails
<?php
function my_email_function($email, $header, $content) {
// We'll use Woocommerce e-mail function to send e-mail to users
ob_start();
// Get WC e-mail header
do_action( 'woocommerce_email_header', $header, $email );
// Content
echo $content;
@mklasen
mklasen / import.font.styl
Created February 24, 2017 10:42
Import font from Google API
@import url('https://fonts.googleapis.com/css?family=Lato:400,700,900')