在wordpress上显示具有特定样式的元数据

时间:2016-04-14 21:45:51

标签: php css wordpress metadata

我将尝试以最佳方式解释这一点。我放弃了我对组的另一个想法,因为我无法显示它。我是php的新手,所以感谢任何帮助。

到目前为止,我在functions.php

中有这个
function gallery_links_get_meta( $value ) {
    global $post;

    $field = get_post_meta( $post->ID, $value, true );
    if ( ! empty( $field ) ) {
        return is_array( $field ) ? stripslashes_deep( $field ) : stripslashes( wp_kses_decode_entities( $field ) );
    } else {
        return false;
    }
}

function gallery_links_add_meta_box() {
    add_meta_box(
        'gallery_links-gallery-links',
        __( 'Gallery Links', 'gallery_links' ),
        'gallery_links_html',
        'post',
        'side',
        'core'
    );
}
add_action( 'add_meta_boxes', 'gallery_links_add_meta_box' );

function gallery_links_html( $post) {
    wp_nonce_field( '_gallery_links_nonce', 'gallery_links_nonce' ); ?>

    <p>List gallery links as well as text.</p>

    <p>
        <label for="gallery_links_gallery_link_text"><?php _e( 'Gallery Link Text', 'gallery_links' ); ?></label><br>
        <input type="text" name="gallery_links_gallery_link_text" id="gallery_links_gallery_link_text" value="<?php echo gallery_links_get_meta( 'gallery_links_gallery_link_text' ); ?>">
    </p>    <p>
        <label for="gallery_links_gallery_link"><?php _e( 'Gallery Link', 'gallery_links' ); ?></label><br>
        <input type="text" name="gallery_links_gallery_link" id="gallery_links_gallery_link" value="<?php echo gallery_links_get_meta( 'gallery_links_gallery_link' ); ?>">
    </p><?php
}

function gallery_links_save( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ( ! isset( $_POST['gallery_links_nonce'] ) || ! wp_verify_nonce( $_POST['gallery_links_nonce'], '_gallery_links_nonce' ) ) return;
    if ( ! current_user_can( 'edit_post', $post_id ) ) return;

    if ( isset( $_POST['gallery_links_gallery_link_text'] ) )
        update_post_meta( $post_id, 'gallery_links_gallery_link_text', esc_attr( $_POST['gallery_links_gallery_link_text'] ) );
    if ( isset( $_POST['gallery_links_gallery_link'] ) )
        update_post_meta( $post_id, 'gallery_links_gallery_link', esc_attr( $_POST['gallery_links_gallery_link'] ) );
}
add_action( 'save_post', 'gallery_links_save' );

/*
    Usage: gallery_links_get_meta( 'gallery_links_gallery_link_text' )
    Usage: gallery_links_get_meta( 'gallery_links_gallery_link' )
*/

我想在帖子上显示这样的数据:

我需要<?php if这里的东西,只有在帖子中填写了元数据时才显示css。

<div id="gallink">
<a href="<?php echo get_post_meta(get_the_ID(), 'gallery_links_gallery_link', true); ?>"><?php echo get_post_meta(get_the_ID(), 'gallery_links_gallery_link_text', true); ?></a>
</div>

但如果元数据尚未填写,我不希望显示“gallink”。

此外,如果我想做多个链接,我希望它采用相同的方式,但我认为如果他们没有填写所有字段,我可能需要另一个<?php if。像这样:

<div id="gallink">
<a href="<?php echo get_post_meta(get_the_ID(), 'gallery_links_gallery_link', true); ?>"><?php echo get_post_meta(get_the_ID(), 'gallery_links_gallery_link_text', true); ?></a>
<a href="<?php echo get_post_meta(get_the_ID(), 'gallery_links_gallery_link2', true); ?>"><?php echo get_post_meta(get_the_ID(), 'gallery_links_gallery_link_text2', true); ?></a>
</div>

如果他们没有填写第二组元数据,我不希望它显示那个,但只显示第一组。

也许我需要在功能页面中添加其他内容来设置样式而不是在页面上进行设置?

我希望这是有道理的。如果需要,我可以尝试更好地解释它,感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

使用empty()函数确定您要检索的元元素中是否有任何内容。

<?php
    $gallery_link_1 = get_post_meta(get_the_ID(), 'gallery_links_gallery_link', true);
    $gallery_link_1_text = get_post_meta(get_the_ID(), 'gallery_links_gallery_link_text', true);
    $gallery_link_2 = get_post_meta(get_the_ID(), 'gallery_links_gallery_link2', true);
    $gallery_link_2_text = get_post_meta(get_the_ID(), 'gallery_links_gallery_link_text2', true);
if (!empty($gallery_link_1_text) || !empty($gallery_link_2_text)) {
?>
<div id="gallink">
    <?php
        if (!empty($gallery_link_1) && !empty($gallery_link_1_text)) {
    ?>
        <a href="<?php echo $gallery_link_1; ?>"><?php echo $gallery_link_1_text; ?></a>
    <?php 
        } 
        if (!empty($gallery_link_2) && !empty($gallery_link_2_text)) {
    ?>
        <a href="<?php echo $gallery_link_2; ?>"><?php echo $gallery_link_2_text; ?></a>
    <?php 
        }
    ?>
</div>
<?php
}
?>