Problem:
The WordPress iPhone app (and other WordPress-related smartphone apps) do not allow for much other than the Title and Body fields (i.e. no access to custom fields).
Goal:
My current project requires that we give our mobile bloggers the option to include a subhead with their mobile (and desktop) posts.
Solution:
I'd like to use an optional delimiter in the title. Example:
Main headline | Secondary headline
Screen shot:
Where the |
is the delimiter that separates main title:
Main headline
... from the subheadline:
Secondary headline
Code requirements:
All built-in, and plugin, code that use "title"-getting WP methods should always return the half before the delimiter (using example from above):
Main headline
In other words, by default, no title-getting functions will ever return:
| Secondary headline
My code so far:
The code immediately below is a simple starting point.
As you can see, I'm filtering the_title
and removing:
| Secondary headline
/**
* Head/deck handling.
*
* Unaltered title (no quotes): "Main headline | Secondary headline"
*
* @see http://stackoverflow.com/a/16279114/922323
* @see http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/post-template.php#L118
* @see https://wordpress.stackexchange.com/questions/45589/
*/
function foo_the_title($title, $id) {
return trim(current(explode('|', $title))); // Returns: "Main headline".
}
add_filter('the_title', 'foo_the_title', 10, 2);
By doing the above, I avoid having to worry about any other functions spitting out the delimiter (and the stuff following it), right? I'm assuming all "title"-getting functions/methods will be affected by the filter the_title
? Maybe I'm missing a corner case here? UPDATE: I found a corner case: wp_title() ... Makes me wonder what else is out there?
Question(s):
Heres where I'm stuck.
How can I write a custom function (or filter/other) that will return the second half of the title?
I was playing with this:
function foo_the_subheadline() {
return apply_filters('the_title', ' My Custom Title (tm) | after the stuff ');
}
Obviously, that's not doing anything useful (I need the ability to manipulate the code/$title
variable in foo_the_title()
).
For example, what I'd really like to do is something like this (pseudo code follows, do not use in real world):
function foo_the_title($title, $id, $part = 'current') {
return trim($part(explode('|', $title)));
}
add_filter('the_title', 'foo_the_title', 10, 3);
function foo_get_me_the_subheadline() {
foo_the_title(pass the title here, pass the id?, 'end'); // Using variable function: http://php.net/manual/en/functions.variable-functions.php
}
Conclusion:
Well, honestly, I'm hoping ya'll can help me find a conclusion. :)
UPDATE (2013/05/14):
See my answer below.
Thoughts:
- Could the fundamental logic be improved?
- Are there any alternative approaches that could work better?