0

我在自定义帖子类型上有一个用于宽度的元框。我试图用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" />
4

1 回答 1

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]那么您将不得不shortcodedisplayCustomPostidatt替换id

于 2013-01-15T06:41:12.267 回答