Add options to featured image

时间:2016-02-02 作者:Interactive

我想在特色图像元框中添加一个选项。

我找到了一种方法here

我遇到的问题是将值保存到数据库中。

以下是我尝试过的:

add_filter( \'admin_post_thumbnail_html\', \'featured_image_opacity\');
function featured_image_opacity( $myhtml ) {
    //$selected_option = GET META OPACITY HERE
    return $myhtml .= \'Opacity: 
    <form>
        <select>
            <option\'. ($selected_option == "0.1" ? "selected" : "" ).\' value="0.1">0.1</option>
        </select>
    </form>\';
}
function meta_save( $post_id ) {
        if( isset( $_POST[ \'opacity\' ] ) ) {update_post_meta( $post_id, \'opacity\', sanitize_text_field( $_POST[ \'opacity\' ] ) );}   
    }   
add_action( \'save_post\', \'meta_save\' );
我看到了选项表单,可以选择一个选项,但它不会保存数据
(我也尝试将函数放在函数中,但也不起作用)

希望有人看到我做错了什么。

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

你说得很对,但有一些小问题。

首先,请为函数和值使用uniqe前缀-opacitymeta_save 非常通用,可供其他作者使用。

其次,你得到元不透明度的部分丢失了,我为你添加了它-只需从当前帖子中检索元值。

第三,我创建了一个函数来循环不同的不透明度。我也用过selected() 函数,但第三个参数(echo)设置为false - 所以selected返回我的值,而不是回显它。这是一个方便的WordPress函数,可以创建这样的选项和类似的东西。

就是这样。

只要确保在使用post缩略图时调整代码,并确保f711_opacity 来自$post 对象,而不是缩略图本身,因为它保存到帖子中。

add_filter( \'admin_post_thumbnail_html\', \'f711_add_something_to_feature_thumb_box\', 10, 2 ); //same as before
function f711_add_something_to_feature_thumb_box( $myhtml, $post_id ) {

    $selected_option = get_post_meta( $post_id, \'f711_opacity\', true ); // get the current value
    for ( $i = 0; $i <= 1; $i = $i + 0.1 ) { //loop from 0 to 1 in 0.1 increments
        $selects .= \'<option value="\' . $i . \'" \' . selected( $selected_option, $i, false ) . \'>\' . $i . \'</option>\'; //add a option field, and select it if it is the one saved before
    }
    //create the return html, with the selects created before
    return $myhtml .= \'Opacity: 
        <form>
            <select name="f711_opacity">
                \' . $selects . \'
            </select>
        </form>\';
}

// function and action to save the new value to the post
function f711_meta_save( $post_id ) {
    if( isset( $_POST[ \'f711_opacity\' ] ) ) {
        update_post_meta( $post_id, \'f711_opacity\', sanitize_text_field( $_POST[ \'f711_opacity\' ] ) );
    }   
}
add_action( \'save_post\', \'f711_meta_save\' );    

相关推荐

如何在Functions.php中链接style.css

我是WordPress的新手;我刚开始学习WordPress。我想把风格联系起来。函数中的css。php,但我无法解决这里可能存在的问题。谁能给我指出正确的方向吗?指数php<?php get_header(); ?> <?php if ( have_posts() ) { while ( have_posts() ) { the_post();