在发布或更新时填充自定义字段

时间:2014-07-06 作者:user3449454

我有一个自定义的帖子类型,叫做books, 包含“流派”、“作者”和“书名”字段。我想根据上述3个字段中的数据动态创建一个名为“booklink”(自定义字段)的链接,并将“booklink”放入数据库中,以便发布或更新帖子。

我该怎么做?

我的代码:

<?php    
$genre = get_field(\'genre\');
$bookname=get_field(\'bookname\');
$author=get_field(\'author);
$booklink="http://mybooks/".$genre."/".$author."/".$bookname.".com";
?>
我不知道如何在发布/更新的每篇文章的数据库中创建“booklink”字段,并用数据进行更新。我想直接检索“booklink”,而不是每次为post\\u类型的书籍生成它。

请引导。

Changed code to elaborate more

使用代码的方式passatgt, 我尝试了以下方法:-

function update_bookstore_field( $post_id ) {
    if ( $_POST[\'post_type\'] == \'books\' ) {

        $booklist = get_field(\'booklist\'); 
        foreach ($booklist as $post) :  setup_postdata($post);
            if (!empty($post)) {
                $bookstore=array();
                $bookstore[] = strip_tags(get_field(\'bookstore\',$post)); 
            } 
        endforeach; 
        wp_reset_postdata();  
        update_post_meta( $post_id, \'bookstore\', $bookstore[0] );
    }
}
add_action( \'save_post\', \'update_bookstore_field\' );
如果booklist是作为post对象连接到书籍的post类型,则根据在booklist中选择的书籍,自定义字段Booker in post type=books将填充booklist post类型的相应书店。

e、 g。

booklist        bookstore
--------        ---------
Wiz of Oz       Amazon
Wiz of Oz 1     Flipkart
Wiz of Oz 2     Barnes&Noble
因此,如果在books post type的select字段中,在booklist中选择了“Wiz of Oz 1”,则books中的书店应在单击publish或update时自动填充flipkart。。。这是不可能的。

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

您是否使用高级自定义字段,对吗?不确定ACF是否会在没有将$post\\u id设置为get\\u字段的第二个参数的情况下拾取字段,因此我更改了您的代码以包含post id。

function update_booklink_field( $post_id ) {
    if ( \'book\' == $_POST[\'post_type\'] ) {
         $genre = get_field(\'genre\',$post_id);
         $bookname=get_field(\'book name\',$post_id);
         $author=get_field(\'author\',$post_id);
         $booklink="http://mybooks/".$genre."/".$author."/".$bookname.".com";
         update_post_meta( $post_id, \'booklink\', $booklink );
    }
}
add_action( \'save_post\', \'update_booklink_field\' );
“save\\u post”操作将在发布和后期编辑时运行。

结束