个性化阅读
专注于IT技术分析

我正在使用woo-commerce创建一个图书销售网站。我想在其中使用图书作者的名字的地方。我怎样才能做到这一点?

我正在使用woo-commerce创建一个图书销售网站。我想在其中使用图书作者的名字的地方。我怎样才能做到这一点 ?另外书作家也会有一些基本信息。其行为类似于类别

我将添加一个产品(book), 并且将有一个分配一个或多个作家的选项。作家将拥有一个简单的个人资料页面, 例如类别页面。

在此处输入图片说明

#1


我建议创建一个名称为’Book Writer’的自定义帖子类型是一个很好的解决方案。

首先, 创建一个名为” book-writers”的自定义帖子类型。然后将所有图书作者另存为帖子。

然后在woo-commerce中创建一个自定义meta-box, 并将其命名为” Assign a book author”。并在其中创建一个动态的meta字段作为选择列表, 该字段将显示” book-writers”的所有帖子的列表, 这些帖子即为book writers的名称。并保存然后保存该元字段。

在发布产品之前, 选择要分配给该产品的图书作者名称, 然后发布该产品。

这样, 你可以添加作者及其与单个作者相关的数据。无需将其添加为用户。你还可以为每个图书作者创建一个详细说明页面。

我希望你明白。

在你的function.php中添加以下代码

function book_writer_meta_box(){
    add_meta_box(
        'book_writer_box_id', // Unique ID
        'Assign a book author', // Box title
        'render_book_writer_meta_box_html', 'product', // Post type
        'normal', 'low'
    );
}
add_action('add_meta_boxes', 'book_writer_meta_box');


function render_book_writer_meta_box_html($post){
    $meta = get_post_meta( $post->ID );
    wp_nonce_field( 'book_writer_metabox', 'book_writer_metabox_nonce' );

    $val_bookWriter = ( isset( $meta['book_writer'][0] ) && '' !== $meta['book_writer'][0] ) ? $meta['book_writer'][0] : '';

    // print_r("<p>val_autoplayTime-".$val_autoplayTime."<p/>");
    echo "<div class='bookWriter_meta_fields_container'>";

    echo '<p><label for="book_writer"><b>Book Writer Name: </b></label><input type="text" name="book_writer" id="book_writer" style="width:100%;" value="'. esc_attr( $val_bookWriter ) .'"></p>';

    echo "</div>";
}


function book_writer_save_metadata($post_id){
    // Check if our nonce is set.
    if ( ! isset( $_POST['book_writer_metabox_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['book_writer_metabox_nonce'] ), 'book_writer_metabox' ) ) { // Input var okay.
            return $post_id;
    }

    // If this is an autosave, our form has not been submitted, so we don't want to do anything.
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }

    // Check the user's permissions.
    if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {
        if ( ! current_user_can( 'edit_page', $post_id ) ) {
            return $post_id;
        }
    }
    else {
        if ( ! current_user_can( 'edit_post', $post_id ) ) {
            return $post_id;
        }
    }

     // OK, it's safe for us to save the data now. 

    // Make sure that it is set.
    if ( !isset($_POST['book_writer']) ) {
        return;
    }

    $fields = ['book_writer'];

    foreach ($fields as $field) {
        if (array_key_exists($field, $_POST)){
            update_post_meta($post_id, $field, sanitize_text_field($_POST[$field]));
        }
    }
}
add_action('save_post', 'book_writer_save_metadata');

#2


你不能将作者添加为产品类别。最好使用插件来销售诸如https://www.wpini.com/woocommerce-bookstore-plugin/之类的书, 否则, 你可以将作者设为产品属性(但不建议这样做)


#3


根据你的要求, 我建议创建一个名为” Book Writer”的用户角色。因此, 基于此角色, 你可以从具有” Book Writer”角色的”用户”菜单中创建尽可能多的用户(作家)。

现在, 使用ACF字段, 你可以在WooCommerce的产品编辑器页面中列出所有” Book Writer”用户。你也可以从ACF中提供多个选择选项。

完成此操作后, 你将获得与产品(” Book”)关联的” Book Writer”的ID, 然后可以将” Book Writer”数据链接到author.php文件, 并且可以根据需要自定义该文件使个人资料更具吸引力。

希望这是有道理的。

谢谢

赞(0)
未经允许不得转载:srcmini » 我正在使用woo-commerce创建一个图书销售网站。我想在其中使用图书作者的名字的地方。我怎样才能做到这一点?

评论 抢沙发

评论前必须登录!