Tambahkan subtitle ke judul produk Woocommerce

8

Saya menggunakan WooCommerce di situs yang dibangun dengan Pagelines Framework. Saya perlu memiliki subtitle / bidang yang dapat disesuaikan muncul di bawah nama produk di mana saja muncul di situs. Karena itu, WooCommerce tidak menawarkan opsi itu.

Saya sudah mencoba menggunakan bidang khusus tetapi WooCommerce juga menggunakannya dan menghasilkan banyak hal yang tidak saya inginkan bersama dengan subtitle saya. Jika saya menamai bidang kustom saya "penulis buku" akankah kode ini berfungsi untuk menampilkan hanya bidang kustom yang saya inginkan?

<?php echo get_post_meta($id, "bookauthor", true); ?>

Dan jika demikian, bagaimana cara membuat output bidang baru saya langsung setelah judul produk di ujung depan?

Saya telah menemukan kait yang saya butuhkan dalam file php ini (saya pikir, saya tidak tahu php, itulah sebabnya saya bertanya kepada Anda):

    <?php 
/*
  * @hooked woocommerce_template_single_title - 5
  * @hooked woocommerce_template_single_price - 10
  * @hooked woocommerce_template_single_excerpt - 20
  * @hooked woocommerce_template_single_add_to_cart - 30
  * @hooked woocommerce_template_single_meta - 40
  * @hooked woocommerce_template_single_sharing - 50
*/
?>

Saya tahu cara memfilter tetapi bagaimana cara menambahkan bidang khusus ke daftar itu?

Atau adakah cara yang sama sekali berbeda untuk mencapai apa yang saya butuhkan?

Terimakasih yang tak terhingga kepada siapa saja yang bisa membantu.

loulousantaana
sumber

Jawaban:

5

Untuk menjawab pertanyaan pertama Anda, dapatkan post meta»penulis buku Anda« dengan cara ini akan menggemakan / menampilkan hal itu. Jika Anda mendefinisikan variabel $iddalam kode Anda dengan benar - atau Anda dapat melakukannya seperti yang ditunjukkan di bawah ini.

Kode harus menjawab pertanyaan kedua Anda, bagaimana memasukkan baris judul kedua Anda ke halaman produk melalui hook woocommerce_single_product_summary. Cukup tambahkan informasi tambahan Anda seperti ini:

    function wpse116660_wc_add_2nd_title() {
        ?>
        <div class="2nd-tile">
            <?php echo get_post_meta(get_the_ID(), "bookauthor", true); ?>
        </div>
        <?php
    }
    add_action( 'woocommerce_single_product_summary', 'wpse116660_wc_add_2nd_title', 6 );

Untuk lebih nyaman dengan meta posting kustom Anda, Anda dapat melakukan apa yang disarankan @ pl4g4 dan @brasofilo dan menambahkan metabox ke layar edit produk, tetapi tentu saja itu tidak perlu, Anda sepertinya tahu bagaimana melakukannya dengan custom wordpress standar bidang metabox .


Anda dapat menambahkan kotak meta Anda seperti ini, kodenya didasarkan pada contoh pertama pada halaman codec wordpress add_meta_box .

/**
 * Adds a box to the main column on the Post and Page edit screens.
 */
function wpse116660_wc_2nd_title_mb() {

    $screen = array( 'product' );

        add_meta_box(
            'wc_2nd_title_mb',
            __( '2nd title', 'your_textdomain' ),
            'wc_2nd_title_inner_mb',
            $screen,
            'advanced',
            'high'
        );
}
add_action( 'add_meta_boxes', 'wpse116660_wc_2nd_title_mb', 0 );

/**
 * Prints the box content.
 * 
 * @param WP_Post $post The object for the current post/page.
 */
function wpse116660_wc_2nd_title_inner_mb( $post ) {

  // Add an nonce field so we can check for it later.
  wp_nonce_field( 'wc_2nd_title_inner_mb', 'wc_2nd_title_inner_mb_nonce' );

  /*
   * Use get_post_meta() to retrieve an existing value
   * from the database and use the value for the form.
   */
  $value = get_post_meta( $post->ID, 'bookauthor', true );

  echo '<label for="bookauthor_field">';
       _e( "Bookauthor", 'your_textdomain' );
  echo '</label> ';
  echo '<input type="text" id="bookauthor_field" name="bookauthor_field" value="' . esc_attr( $value ) . '" size="50" />';

}

/**
 * When the post is saved, saves our custom data.
 *
 * @param int $post_id The ID of the post being saved.
 */
function wpse116660_wc_2nd_title_save_postdata( $post_id ) {

  /*
   * We need to verify this came from the our screen and with proper authorization,
   * because save_post can be triggered at other times.
   */

  // Check if our nonce is set.
  if ( ! isset( $_POST['wc_2nd_title_inner_mb_nonce'] ) )
    return $post_id;

  $nonce = $_POST['wc_2nd_title_inner_mb_nonce'];

  // Verify that the nonce is valid.
  if ( ! wp_verify_nonce( $nonce, 'wc_2nd_title_inner_mb' ) )
      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 ( '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, its safe for us to save the data now. */

  // Sanitize user input.
  $mydata = sanitize_text_field( $_POST['bookauthor_field'] );

  // Update the meta field in the database.
  update_post_meta( $post_id, 'bookauthor', $mydata );
}
add_action( 'save_post', 'wpse116660_wc_2nd_title_save_postdata' );
Nicolai
sumber
1
+1. Dengan add_actionprioritas 6 itulah yang akan menempatkan subtitle tepat setelah judul biasa (yang memiliki prioritas 5). Jika OP tidak ingin menambahkan metabox-nya sendiri, saya sudah menulis plugin subtitle yang menyimpan data.
Helgatheviking
3

Anda dapat menambahkan metabox tambahan ke pos produk. Kotak meta ini seharusnya memiliki dan memasukkan formulir sehingga Anda dapat memasukkan sub-judul, ketika Anda telah menambahkan metabox, simpan nilai di post_meta ketika produk disimpan, kemudian di halaman produk tunggal dari templat woocommerce gunakan kode

<?php echo get_post_meta($id, "bookauthor", true); ?>

untuk mendapatkan.

Anda dapat menemukan info tentang metaboxess Here And juga Here

pl4g4
sumber
Atau gunakan Bidang Kustom Tingkat Lanjut atau cari arsip kami .
brasofilo
+1, tapi tolong jangan memposting tautan ke sumber luar. Jika Anda perlu melakukannya, maka harap juga panggil apa yang tertulis (kode) di target.
kaiser