Thanks for this, Justin. This is definitely worth exploring.<br><br><div class="gmail_quote">On Thu, Aug 11, 2011 at 2:48 PM, Justin Tadlock <span dir="ltr"><<a href="mailto:justin@justintadlock.com">justin@justintadlock.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><u></u>
<div text="#000000" bgcolor="#ffffff">
Here's what I do for dynamic layouts on the front end. I don't use
$content_width for this. I filter 'embed_defaults' to handle embeds
because this is where the problems arise. For images or anything
else, you can use CSS.<br>
<br>
The basic functionality would be something like:<br>
<br>
=======<br>
<br>
add_filter( 'embed_defaults', 'my_embed_defaults' );<br>
<br>
function my_embed_defaults( $args ) {<br>
<br>
$layout = my_get_layout_function();<br>
<br>
if ( '1-column' == $layout )<br>
$args['width'] = 900;<br>
<br>
elseif ( '2-columns' == $layout )<br>
$args['width'] = 600;<br>
<br>
return $args;<br>
}<br>
<br>
======<div><div></div><div class="h5"><br>
<br>
On 8/10/2011 2:25 PM, Chip Bennett wrote:
<blockquote type="cite">Okay, one more stab at this.
<div><br>
</div>
<div>First, I'm hooking oenology_set_content_width() into two
hooks, one on the front end, and one on the back end:</div>
<div><br>
</div>
<blockquote style="margin:0pt 0pt 0pt 40px;border:medium none;padding:0px">
<div>
<div>add_action( 'wp_head', 'oenology_set_content_width' );</div>
<div>add_action( 'admin_init', 'oenology_set_content_width' );</div>
</div>
</blockquote>
<div><br>
</div>
<div>Second, I changed oenology_get_current_page_layout() to
accommodate both contexts:</div>
<div><br>
</div>
<blockquote style="margin:0pt 0pt 0pt 40px;border:medium none;padding:0px">
<div>
<div>function oenology_get_current_page_layout() {</div>
<div><span style="white-space:pre-wrap"> </span>global
$post, $oenology_options;</div>
<div><span style="white-space:pre-wrap"> </span>$custom
= ( get_post_custom( $post->ID ) ? get_post_custom(
$post->ID ) : false );</div>
<div><span style="white-space:pre-wrap"> </span>$custom_layout
= ( isset( $custom['_oenology_layout'][0] ) ?
$custom['_oenology_layout'][0] : 'default' );<span style="white-space:pre-wrap"> </span></div>
<div><span style="white-space:pre-wrap"> </span>$layout
= '';</div>
<div><span style="white-space:pre-wrap"> </span>if
( ! is_admin() ) {</div>
<div><span style="white-space:pre-wrap"> </span>if
( is_page() ) {</div>
<div><span style="white-space:pre-wrap"> </span>if
( 'default' == $custom_layout ) {</div>
<div><span style="white-space:pre-wrap"> </span>$layout
.= $oenology_options['default_static_page_layout'];</div>
<div><span style="white-space:pre-wrap"> </span>}
else {</div>
<div><span style="white-space:pre-wrap"> </span>$layout
.= $custom_layout;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}
else if ( is_single() ) {</div>
<div><span style="white-space:pre-wrap"> </span>if
( 'default' == $custom_layout ) {</div>
<div>
<span style="white-space:pre-wrap"> </span>$layout
.= $oenology_options['default_single_post_layout'];</div>
<div><span style="white-space:pre-wrap"> </span>}
else {</div>
<div>
<span style="white-space:pre-wrap"> </span>$layout
.= $custom_layout;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}
else if ( is_home() || is_archive() || is_search() ||
is_404() ) {</div>
<div><span style="white-space:pre-wrap"> </span>$layout
.= $oenology_options['post_index_layout'];</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}
else if ( is_admin() ) {</div>
<div><span style="white-space:pre-wrap"> </span>if
( 'page' == $post->post_type ) {</div>
<div><span style="white-space:pre-wrap"> </span>if
( 'default' == $custom_layout ) {</div>
<div><span style="white-space:pre-wrap"> </span>$layout
.= $oenology_options['default_static_page_layout'];</div>
<div><span style="white-space:pre-wrap"> </span>}
else {</div>
<div><span style="white-space:pre-wrap"> </span>$layout
.= $custom_layout;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}
else if ( is_single() ) {</div>
<div><span style="white-space:pre-wrap"> </span>if
( 'post' == $post->post_type ) {</div>
<div><span style="white-space:pre-wrap"> </span>$layout
.= $oenology_options['default_single_post_layout'];</div>
<div><span style="white-space:pre-wrap"> </span>}
else {</div>
<div><span style="white-space:pre-wrap"> </span>$layout
.= $custom_layout;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>return
$layout;</div>
<div>}</div>
</div>
</blockquote>
<div><br>
</div>
<div>I *think* this covers all bases?</div>
<div><br>
</div>
<div>I would love to hear anyone's thoughts on best practices
here!</div>
<div><br>
</div>
<div>Chip<br>
<br>
<div class="gmail_quote">
On Wed, Aug 10, 2011 at 1:55 PM, Chip Bennett <span dir="ltr"><<a href="mailto:chip@chipbennett.net" target="_blank">chip@chipbennett.net</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
It definitely impacts large images and oembeds on the front
end. So, setting it *only* in the Admin side wouldn't help
with those.
<div><br>
</div>
<div>Question: what if there was one *global* set (e.g.
using the largest width), and then a front-end override
(e.g. using my original function)? There's nothing
preventing that, is there? Let me play around with it a
bit. I want to figure out what is the best-practice
implementation, while allowing for dynamic content width
(primarily for display of large-size images, and embedded
videos.</div>
<div><br>
</div>
<font color="#888888">
<div>Chip</div>
</font>
<div>
<div>
<div><br>
<div class="gmail_quote">On Wed, Aug 10, 2011 at 1:46
PM, Otto <span dir="ltr"><<a href="mailto:otto@ottodestruct.com" target="_blank">otto@ottodestruct.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
Consistency is something that happens to other
people.<br>
<br>
The $content_width is actually used for a lot of
things. It also<br>
controls the width of the fullscreen editor, for
example. It also<br>
controls the width used for oembed requests. It
controls the maximum<br>
value of the "large" image size when displayed in
the editor.<br>
<br>
So it definitely needs to be set globally. In
fact, it probably only<br>
needs to be set in the admin side, I don't think
it has much if any<br>
effect on the public facing side of the site.
Although I'm not sure<br>
about that, especially for the oembeds case.<br>
<font color="#888888"><br>
-Otto<br>
</font>
<div>
<div><br>
<br>
<br>
On Wed, Aug 10, 2011 at 1:35 PM, Chip Bennett
<<a href="mailto:chip@chipbennett.net" target="_blank">chip@chipbennett.net</a>>
wrote:<br>
> So what would be best practice here?
Perhaps setting it separately for<br>
> is_admin(), and using the largest
$content_width value? Perhaps hooking it<br>
> into admin_init?<br>
> Also: why is $content_width used on
*insertion*, yet controlled by the<br>
> *Theme*? That isn't intuitive. And,
wouldn't it potentially introduce issues<br>
> whenever the Theme is changed *after*
insertion?<br>
> Chip<br>
><br>
> On Wed, Aug 10, 2011 at 10:22 AM, Otto
<<a href="mailto:otto@ottodestruct.com" target="_blank">otto@ottodestruct.com</a>>
wrote:<br>
>><br>
>> I've tried this sort of thing, and it
is *fraught* with peril.<br>
>><br>
>> Make sure you test inserting content
into various posts and pages and<br>
>> such thoroughly. The content width is
used on content insertion, not<br>
>> just on content display.<br>
>><br>
>> Basically, the media uploader expects
the content width to be set when<br>
>> images are uploaded and resized. If
you're only setting it on wp_head,<br>
>> your results may be unexpected for
various size values in the media<br>
>> section.<br>
>><br>
>> -Otto<br>
>>
_______________________________________________<br>
>> theme-reviewers mailing list<br>
>> <a href="mailto:theme-reviewers@lists.wordpress.org" target="_blank">theme-reviewers@lists.wordpress.org</a><br>
>> <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
><br>
><br>
>
_______________________________________________<br>
> theme-reviewers mailing list<br>
> <a href="mailto:theme-reviewers@lists.wordpress.org" target="_blank">theme-reviewers@lists.wordpress.org</a><br>
> <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
><br>
><br>
_______________________________________________<br>
theme-reviewers mailing list<br>
<a href="mailto:theme-reviewers@lists.wordpress.org" target="_blank">theme-reviewers@lists.wordpress.org</a><br>
<a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
<pre><fieldset></fieldset>
_______________________________________________
theme-reviewers mailing list
<a href="mailto:theme-reviewers@lists.wordpress.org" target="_blank">theme-reviewers@lists.wordpress.org</a>
<a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a>
</pre>
</blockquote>
</div></div></div>
<br>_______________________________________________<br>
theme-reviewers mailing list<br>
<a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
<a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers" target="_blank">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
<br></blockquote></div><br>