ANTH 101 Rebirth

I had the chance to work more on the ANTH 101 site with Ryan and Mike over winter break. It’s a pretty significant change. It’s almost entirely gutted in terms of the WordPress side of things with a different theme, some new plugins etc. but also some significant changes on how student see and interact with the work they make. Some of the initial conversations resulted in the Minimal WordPress work which . . . we ended up tossing.1 But what we ended up creating is pretty slick and does a number of pretty interesting things. The Bones ANTH101 is a large class- several hundred students large – so a chunk of being able to deal with that is making things simple for students. A large chunk of work went towards simplicity. Another large chunk of effort went towards making it feel and look app-like on a phone. That’s the equivalent of making it look cool/interesting and feel modern – pretty much the opposite of most course site software. It was expected students would be using their phones to submit work and browse. ANTH101 runs on a child-theme of Boss.Not like this boss (#nsfw). There are few different plugins that make it all work. The major ones are as follows – Visual Composer – both Mike and Ryan want to […]

You Can’t Do That on WordPress

I submitted something like this already to NMC but it failed . . . and I did not have a backup copy. They happened to extend the deadline so I’ve resubmitted and I’m sticking a copy here for future reference. It might also be useful just for a handy list of examples. 100 Word Summary 1 Open Source, highly flexible, and running 1 in every 4 sites on the Internet today, yet many still put WordPress in the “cat diary” box.2 In the initiative’s third year, we have 21,000+ sites. See examples of WordPress as a single-use tool and how it can be used to build truly customized courses.  All examples are open to the world (no passwords). We’ll explore design patterns (build fast at scale) and powerful plugins (use the community). Mind expansion is the goal. The code’s on GitHub. Warning: 1980s Canadian TV show references will occur. These are all public examples. They’re in real courses in a large, public university. This is work that is accessible and possible for anyone. Additionally, all the plugins and themes we create are on GitHub (here and here). I’ve also done my best to document how it all works on many posts on my site. I want people to be able to do this on their own or with their institution […]

Required Plugin Trick

Image from page 148 of “The Phynodderree, and other legends of the Isle of Man” (1882) flickr photo by Internet Archive Book Images shared with no copyright restriction (Flickr Commons) 1 Mark Luetke wrote a really nice plugin2 for us when he was here that helped faculty setup mother blogs. It requires FeedWordPress (FWP) to be active to work. This morning I had a faculty member who set everything up correctly except for FWP. It’s happened a few other times so I figured I’d do something about it. I’d seen plugins that warn you if you don’t have a required plugin working so I went that route first. The code below was lifted straight from this stackoverflow response and set to look for FWP. It was decent and functional but I felt like I could make the notification better which led down a winding road. Modal Popup This code is straight from this codepen.3 And the little child_plugin_notice function got a bit larger. ID FWP Then I thought it’d be neat if I could scroll them down to FWP when they closed the modal popup. This could have been easy if the WP plugins table had ID elements that were rationale but it doesn’t. That led to a bit of an odyssey with various flavors of document.getElements. I still don’t […]

WP REST API Custom Fields to Google Maps

Manuel, the young shrimp-picker, five years old, and a mountain of child-labor oyster shells behind him. He worked last year. Understands not a word of English. Dunbar, Lopez, Dukate Company. Location: Biloxi, Mississippi. (LOC) flickr photo by The Library of Congress shared with no copyright restriction (Flickr Commons) 1 I had a site we used for the Great VCU Bike Race course that’s been sitting around. I knew it had lat/lng data for lots of urban bicycle related posts. My goal was to get it into Google Maps via the REST API. Get Custom Field in JSON By default you won’t see custom field data in your JSON endpoints. There are some plugins to make that happen but I wanted to take a stab at doing it myself. Given the documentation, it was pretty trivial.2 The code below in a plugin or the function.php file would make the lat_long custom field show up in the post JSON. Using this URL, I can get the 30 most recent posts.3 Some Map Stuff Google wants lat/lng separate but it’s coming in as one item split by a comma. These little functions split it up nicely. In javascript, split breaks up a string by the defined element (comma in this case) and returns the pieces as an array. Since I’ll get two pieces […]

WordPress – Comments to Spreadsheet

Image from page 981 of “A system of instruction in X-ray methods and medical uses of light, hot-air, vibration and high-frequency currents : a pictorial system of teaching by clinical instruction plates with explanatory text : a series of photographic cli flickr photo by Internet Archive Book Images shared with no copyright restriction (Flickr Commons) This is a bit odd but if you work in education it’s quite possible it’ll come up . . . Sometimes people just want the blog comments in a nice friendly CSV file. That might be for grading, it might be for further analysis in Voyant or something like that. What I need to do is write a little plugin for the export like Alan did for posts but until I get around to that I took advantage of another plugin Alan wrote to expand comments to the 100 most recent comments. So since I have lots of comments available in the feed, I can just use the =IMPORTXML function to port right into Google Sheets. There’s probably a smart way to parse out multiple XML fields at a time but this seems to work ok. All the functions I used are broken down in the sheet embedded below. Most are simply some version of IMPORTXML(b1,”//title”). B1 is the URL for the feed and the […]


500 Error on wp-admin after upgrade

This happened with one of our individual installs and it’s happened before (but I forgot the solution) so I’m writing it down. After the upgrade to 4.7.1, the front of the sight still worked but attempts to get to wp-admin failed with a 500 error and the URL was redirecting to something with upgrade.php? in the URL. Solution Change the name of the plugin folder (I just prepend an underscore). Revisit your login URL. Run the database upgrade as prompted. You should now be in the admin zone. Fix your plugin folder name. Easy but also easy to forget.

Bootstrap Collapsible Shortcode Plugin

There are a bunch of these out there but the ones I knew of didn’t quite do what was needed by the Focused Inquiry faculty involved in this project. They wanted a couple things to be possible. The ability to link to specific elements via URL and have them expand. The URL to those elements to remain consistent even if the order of the elements was changed. An “email this URL” link to enable faculty to send the URL to students Plus/Minus indicators based on expanded/collapsed. Most shortcode plugins I’ve seen either don’t have an ID for the collapse element or make it sequential (which changes if you shift the order). Neither works well for a URL that needs to be consistent. I’ve never seen one to do the email element. In my head, I made this way harder than it needed to be. It ends up being just two shortcodes- one for the collapsible container and one for the item-level elements. I found this Bootstrap snippet that did most of the functional Bootstrap stuff that I needed. I found a script to let me expand elements via URL parameters. I reminded myself what a freaking mailto link structure looked like. Now I just had to figure out what variables needed to be set in the shortcode and how the […]

Minimal WordPress

Sometimes people just want a little bit of WordPress. Before hanging a left with the site, we pruned it waaaaay down and tried to make it as simple as possible. This is a pretty solid example that WordPress can be just about anything you want if you’re willing to put in a bit of time and effort. I figure having all these things in one place will help someone else (me most likely) at some point. Hide Posts from Other Authors If you have many authors, you often don’t want them seeing a bunch of posts in the admin area that they can’t edit. Make their lives easier and hide everything else. I believe this is where I found the code. Remove Sidebar Options To further clean up the sidebar for authors, the following code removes lots of things that you don’t want students bothering with anyway. You can get lots of details on this in the codex. Go to Directly to Post, Do Not Pass Dashboard This shunts people directly to the posts area rather than going to the dashboard on login. Posts in Single Column This sets the posts to single column display to simplify writing and was found here. Purify and Rename the Post Page This chunk removes certain meta boxes and restructures the language on […]

Vue and the WordPress REST API

I’ve continued to play around with using Vue and WordPress’s API. The Vue stuff is entirely new to me but it’s pushing my javascript knowledge. The main reason I’m excited about the WordPress/Vue (or whatever framework) combinations is simply speed. If you have any doubts give the pagination at the bottom of this demo site a shot. Crazy fast . . . and running stock on shared hosting. No caching plugins etc. The site is running the Vuetiful WordPress theme which has been an interesting thing to look at and see how it all works. Github is such a good thing. Below or linked here is the WP JSON/Vue pagination I eventually got working. It’s forked from this demo by Brian Krosgard.1 Even with that large head start, a few things hung me up. First, the navigation of the JSON elements is a bit tricky if you’re not used to it. You’ll want to use the _embed parameter2 to get access to the featured image data. That’s an option I didn’t know about previously. Since I named my main JSON objects ‘post’– to access the thumbnail URL, I’d use post._embedded[‘wp:featuredmedia’][0].media_details.sizes.thumbnail.source_url The part you need to pay attention to is the square brackets and the number following it. Notice there is no period between _embedded and [‘wp:featuredmedia’]. You might also […]

Instagram-ish WordPress Filter Shortcode Plugin

That beautiful link-bait title and a picture of a dead leaf! That’s why I’m a social media guru. With that self-promotion out of the way . . . I found this CSS library from Una.1 It lets you apply instagram-like filters to image via CSS. Also got to have a nice interaction with Una via Twitter to clarify the license. @twoodwar :+1: its MIT so go ahead — Una Kravets (@Una) December 6, 2016 It fit a need that a professor was expressing for one of our WordPress installs so I wrapped it in a plugin/shortcode combination. The structure goes like so . . . [ cssgram img=”” filter=”_1977″ ] Plain Image A Few Filtered Examples _1977 Inkwell Xpro2 1 Check out her site if you’re into developer stuff at all.