Vlastní metabox – skrytí nevyplněného pole

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Vlastní metabox – skrytí nevyplněného pole

Zvolené téma obsahuje celkem 2 odpovědi. Do diskuze (2 účastníci) se naposledy zapojil uživatel  mil667 a poslední změna je stará 8 let, 6 měsíců.

Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (z celkem 3)
  • Autor
    Příspěvky
  • #25086

    mil667
    Participant

    Mám vytvořený tento metabox.

    add_action( 'add_meta_boxes', 'cd_add_quote_meta' );
    function cd_add_quote_meta()
    {
        add_meta_box( 'quote-meta', __( 'Metabox' ), 'cd_quote_meta_cb', 'page', 'normal', 'default' );
    }
    
    function cd_quote_meta_cb( $post )
    {
        // Get values for filling in the inputs if we have them.
        $date = get_post_meta( $post->ID, '_cd_quote_date', true );
         
        // Nonce to verify intention later
        wp_nonce_field( 'save_quote_meta', 'quote_nonce' );
        ?>
        <p>
            <label for="quote-date">Date</label>
            <input type="text" class="widefat" id="quote-date" name="_cd_quote_date" value="<?php echo $date; ?>" />
        </p>
        <?php
         
    }
    ?>
    
    <?php
    add_action( 'save_post', 'cd_quote_meta_save' );
    function cd_quote_meta_save( $id )
    {
        if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
         
        if( !isset( $_POST['quote_nonce'] ) || !wp_verify_nonce( $_POST['quote_nonce'], 'save_quote_meta' ) ) return;
         
        if( !current_user_can( 'edit_post' ) ) return;
         
        $allowed = array(
            'p' => array()
        );
             
        if( isset( $_POST['_cd_quote_date'] ) )
            update_post_meta( $id, '_cd_quote_date', esc_attr( strip_tags( $_POST['_cd_quote_date'] ) ) );
         
    }

    V šabloně jej vypisuji takto:
    <p><b>Date:</b> <?php echo get_post_meta($post->ID, '_cd_quote_date', true); ?></p>

    Takže když není hodnota v metaboxu vyplněna zobrazí se na webu “Date:”. Jak to mám nastavit aby se “Date:” zobrazilo jen pokud je pole v metaboxu vyplněné?

    Díky

    #25087

    sjiamnocna
    Participant
    Web

    Zkusil bych použít podmínku, a přepsat to v šabloně:

    <?php
    $_qdate = get_post_meta($post->ID, '_cd_quote_date', true)
    
    if( $_qdate !== '' )
    echo "<p><b>Date</b>$_qdate</p>";
    ?>

    Nejsem si jistý, jestli se to tak také dá udělat při typu string nebo array, moc tomuto zápisu nerozumím, ale už jsem to párkrát viděl takže asi jo :) :

    if( $_qdate = get_post_meta($post->ID, '_cd_quote_date', true) )
    echo "<p><b>Date</b>$_qdate</p>";
    ?>
    #25150

    mil667
    Participant

    Díky. Funguje to.

Aktuálně jsou na stránce zobrazeny 3 příspěvky - 1. až 3. (z celkem 3)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti