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


Display metadata with specific style on wordpress

我将尽力解释这一点。我放弃了与团队的另一个想法,因为我无法将其展示出来。我是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>

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

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

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

使用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
}
?>