我在自定义帖子类型上有宽度的元框。我试图用get_post_meta
来放置一些CSS。一切正常,但元价值并没有通过。这是我的功能:
function mo_carousel_css(){
global $post;
$width = get_post_meta( $post->ID, 'mo_carousel_width', true );
?>
<style type="text/css">
.jcarousel-container-horizontal{
width:<?php echo $width; ?>px;
}
</style>
<?php
}
我检查了数据库,并且元密钥/值分别正确存储为mo_carousel_width
和500
。我认为global $post;
将是修复但没有运气。
通过访问$object
,可以在后端的元数据框中正确检索该值,但这似乎也不起作用。这是创建值的表单的代码:
/* Display the post meta box. */
function mo_carousel_meta_box( $object, $box ) { ?>
<?php wp_nonce_field( basename( __FILE__ ), 'mo_carousel_nonce' ); ?>
<p>
<span>Carousel Size</span>
</br>
<input type="text" name="mo-carousel-width" id="mo-carousel-width" value="<?php echo esc_attr( get_post_meta( $object->ID, 'mo_carousel_width', true ) ); ?>" size="10" />
答案 0 :(得分:1)
我是通过研究Shortcode API编写的,我认为它应该可以工作,但我还没有尝试过。
function mo_carousel_css() {
global $post;
preg_match( '/' . get_shortcode_regex() . '/s', $post->post_content, $m);
if (is_array($m) && $m[2] == 'shortcode' ) {
$shortcode_args = shortcode_parse_atts( $m[3] );
$width = get_post_meta( $shortcode_args['idatt'], 'mo_carousel_width', true );
<style type="text/css">
.jcarousel-container-horizontal{ width:<?php echo $width; ?>px; }
</style>
}
}
它基本上做的是检查当前帖子中是否使用了短代码。如果正在使用短代码,请从中检索属性并使用id属性获取后期元数据。
如果您的短代码为[displayCustomPost id=24]
,那么您必须将shortcode
替换为displayCustomPost
,将idatt
替换为id
。