[英]WordPress get_post_meta Not Working in a Function
我在自定義帖子類型的寬度上有一個meta框。 我試圖使用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
,可以在后端的metabox中很好地檢索該值,但這似乎也不起作用。 這是用於創建值的表單的代碼:
/* 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" />
我是通過研究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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.