通过函数将输入字段添加到‘Pages>编辑页面’。php

时间:2013-07-01 作者:Paxjah

原始问题:

我正在尝试将输入字段添加到“页面>编辑页面”。此输入字段的使用将由用户添加滑块的ID,以便滑块特定于页面。

示例:

用户将幻灯片ID添加到编辑页面屏幕的输入字段中

  • 页面输入该ID。

  • 感谢所有回应的人,你们是一个很棒的社区,我从这个网站得到了极好的帮助,谢谢!

    FINAL RESULT

    functions.php

    // Add custom Slider ID field to \'Edit Page\'
    add_action( \'add_meta_boxes\', \'cd_meta_box_add\' );
    function cd_meta_box_add() {
        add_meta_box( \'my-meta-box-id\', \'Slider\', \'cd_meta_box_cb\', \'page\', \'normal\', \'high\' );
    }
    function cd_meta_box_cb( $post ) {
        $values = get_post_custom( $post->ID );
        $text = isset( $values[\'my_meta_box_text\'] ) ? esc_attr( $values[\'my_meta_box_text\'][0] ) : \'\';
        wp_nonce_field( \'my_meta_box_nonce\', \'meta_box_nonce\' );
        ?>
        <p>
            <label for="my_meta_box_text">Add a slider ID</label>
            <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
        </p>
        <?php   
    }
    add_action( \'save_post\', \'cd_meta_box_save\' );
    function cd_meta_box_save( $post_id ) {
        // Bail if we\'re doing an auto save
        if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;
        // if our nonce isn\'t there, or we can\'t verify it, bail
        if( !isset( $_POST[\'meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'meta_box_nonce\'], \'my_meta_box_nonce\' ) ) return;
        // if our current user can\'t edit this post, bail
        if( !current_user_can( \'edit_post\', $post_id ) ) return;
        // now we can actually save the data
        $allowed = array( 
            \'a\' => array( // on allow a tags
                \'href\' => array() // and those anchords can only have href attribute
            )
        );
        // Probably a good idea to make sure your data is set
        if( isset( $_POST[\'my_meta_box_text\'] ) )
            update_post_meta( $post_id, \'my_meta_box_text\', wp_kses( $_POST[\'my_meta_box_text\'], $allowed ) );
    }
    

    Page.php

    <?php echo do_shortcode( \'[cycloneslider id="\' . get_post_meta(get_the_ID(), \'my_meta_box_text\', true) . \'"]\'); ?>
    

    3 个回复
    最合适的回答,由SO网友:Paxjah 整理而成

    functions.php

    // Add custom Slider ID field to \'Edit Page\'
    add_action( \'add_meta_boxes\', \'cd_meta_box_add\' );
    function cd_meta_box_add() {
        add_meta_box( \'my-meta-box-id\', \'Slider\', \'cd_meta_box_cb\', \'page\', \'normal\', \'high\' );
    }
    function cd_meta_box_cb( $post ) {
        $values = get_post_custom( $post->ID );
        $text = isset( $values[\'my_meta_box_text\'] ) ? esc_attr( $values[\'my_meta_box_text\'][0] ) : \'\';
        wp_nonce_field( \'my_meta_box_nonce\', \'meta_box_nonce\' );
        ?>
        <p>
            <label for="my_meta_box_text">Add a slider ID</label>
            <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
        </p>
        <?php   
    }
    add_action( \'save_post\', \'cd_meta_box_save\' );
    function cd_meta_box_save( $post_id ) {
        // Bail if we\'re doing an auto save
        if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;
        // if our nonce isn\'t there, or we can\'t verify it, bail
        if( !isset( $_POST[\'meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'meta_box_nonce\'], \'my_meta_box_nonce\' ) ) return;
        // if our current user can\'t edit this post, bail
        if( !current_user_can( \'edit_post\', $post_id ) ) return;
        // now we can actually save the data
        $allowed = array( 
            \'a\' => array( // on allow a tags
                \'href\' => array() // and those anchords can only have href attribute
            )
        );
        // Probably a good idea to make sure your data is set
        if( isset( $_POST[\'my_meta_box_text\'] ) )
            update_post_meta( $post_id, \'my_meta_box_text\', wp_kses( $_POST[\'my_meta_box_text\'], $allowed ) );
    }
    

    Page.php

    <?php echo do_shortcode( \'[cycloneslider id="\' . get_post_meta(get_the_ID(), \'my_meta_box_text\', true) . \'"]\'); ?>
    
    SO网友:Krzysiek Dróżdż

    首先,如果您想为帖子/页面分配一些附加值,而不是为站点分配全局值,则应该使用自定义字段。

    那么你应该使用add_meta_box 函数注册自定义元框,这样可以轻松编辑这些自定义字段。

    以下是示例代码:

    // register your custom meta box
    function my_slider_properties_meta_box() {
        add_meta_box(\'my_slider_properties\', \'Link Format Title URL\', \'my_slider_properties\', \'page\', \'side\', \'default\');
    }
    add_action(\'add_meta_boxes\', \'my_slider_properties_meta_box\');
    
    
    // echo your custom meta box
    function my_slider_properties() {
        global $post; 
    
        $my_slider_id = get_post_meta($post->ID, \'_my_slider_id\', true);
    
        echo \'<p>My slider id</p>\';
        echo \'<input type="text" name="_my_slider_id" value="\' . esc_attr($my_slider_id)  . \'" size="40" />\';
    }
    
    
    // process your custom meta box while saving
    function my_slider_properties_save_meta($post_id, $post) {
        if ( !current_user_can( \'edit_post\', $post->ID ))
            return $post->ID;
    
        $metas[\'_my_slider_id\'] = $_POST[\'_my_slider_id\'];
    
        foreach ($metas as $key => $value) {
            update_post_meta($post->ID, $key, $value);
        }
    }
    add_action(\'save_post\', \'my_slider_properties\', 1, 2);
    
    这是如何做到这一点的唯一基本示例。我想你应该注意安全(使用nonces)和其他事情。但现在这个想法应该很清楚了。

    (6个字符)

    SO网友:Vinod Dalvi

    如果要为特定于所有页面的页面保存滑块id,则应使用post meta boxes 而不是wp选项。

    从后期元使用中获取价值get_post_meta() 函数代替get\\u option()函数。

    结束

    相关推荐

    Shotcode error on functions

    您好,我有一个生成错误的短代码。有人能帮忙吗?add_shortcode(\'do-action\', \'do_action_shortcode\'); function do_action_shortcode($atts, $content = \'\') {   ob_start();   do_action($content);   $out = ob_get_contents();   ob_end_clean();   return $