WordPress get_post_meta在函数中不起作用

时间:2013-01-14 23:43:08

标签: php wordpress meta-boxes

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

1 个答案:

答案 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