我正在使用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文件, 并且可以根据需要自定义该文件使个人资料更具吸引力。
希望这是有道理的。
谢谢
评论前必须登录!
注册