首先,我想分析一下我的问题。使用Wordpress / Woocommerce我需要在产品库中的图像旁边添加视频。 Woocommerce根本不支持视频。
所以,我想安装一个支持图像和视频的额外图库插件。
现在,我想将特定的图片/视频库集合映射到特定产品。我还想在一个新区域中查看此图库集合,该区域不属于标准文本字段,如描述或简短描述。让我们说上面的主要产品图片。代表gallery集合id = 1的php代码如下所示:
<?php echo do_shortcode('[wonderplugin_gallery id="1"]'); ?>
问题是我需要库集合ID是可变的,如下所示:
<?php echo do_shortcode('[wonderplugin_gallery id="X"]'); ?>
其中X代表特定的图库集合。我怎么能将画廊收藏ID XXXX连接到我的产品页面XXXXX?
我有编程技巧,但我是wordpress代码逻辑的新手。
对我的问题有任何其他建议,比如可以用更好的产品库替换默认产品库的插件吗?
此致
答案 0 :(得分:0)
我要么使用产品自定义字段作为Anand建议,要么创建一个带有必要输入字段的元数据(或根据您使用图库插件的方式下拉菜单)。
首先我创建一个metabox,然后在该元数据库中我将从插件中获取信息(图库ID和名称)。除此之外,您可以创建一个下拉列表。您应该能够像您建议的那样为每个产品选择该元数据的ID。例如,像这样的东西可以工作:
<?php
if ( ! function_exists( 'product_add_meta' ) ){
function product_add_meta(){
add_meta_box("gallery_dropdown", "Select Gallery", "product_gallery_meta_box", "product");
}
}
add_action("admin_init", "product_add_meta");
if ( ! function_exists( 'product_gallery_meta_box' ) ){
function product_gallery_meta_box( $post ){
$post_types = array('product'); //limit meta box to certain post types
global $post;
$product = get_product( $post->ID );
$values = get_post_custom( $post->ID );
$gallery = (isset($values['gallery'][0])) ? $values['gallery'][0] : '';
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
<select name="gallery" id="gallery">
//example of how the option should look
<option value="<?php echo $gallery_id; ?>" <?php selected( $gallery, $gallery_id ); ?>><?php echo $gallery_name; ?></option>
<?php
//pull options from plugin here and create an option dropdown with foreach
?>
</select>
</p>
<?php
}
}
if ( ! function_exists( 'product_gallery_save_meta_box' ) ){
function product_gallery_save_meta_box( $post_id ){
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ){
return;
}
if( !isset( $_POST['gallery'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) {
return;
}
if( !current_user_can( 'edit_pages' ) ) {
return;
}
if( isset( $_POST['gallery'] ) ){
update_post_meta( $post_id, 'gallery', wp_kses( $_POST['gallery'] ,'') );
}
}
}
add_action( 'save_post', 'product_gallery_save_meta_box' );
如果你将它放在functions.php中,它应该会在你的woocommerce产品页面上显示一个名为“选择图库”的元数据框,并带有一个空的下拉列表。
我没有填写您从创建图库的插件中获得的选项,但它不应该太难。
答案 1 :(得分:0)
一种方法是绑定产品页面ID和图库ID。如果您可以更改图库的ID,请将其更改为与产品页面的ID相匹配。现在,您可以使用以下两个示例创建短代码。
// outside the loop use global ( uncomment appropriate statement )
// global $product;
// global $post;
do_shortcode( sprintf( '[wonderplugin_gallery id="%d"]', $product->id ) );
do_shortcode( sprintf( '[wonderplugin_gallery id="%d"]', $post->ID ) );
HERE是插件的链接,可显示管理页面上的大部分ID。
另一个是在编辑产品管理页面(例如名为gallery_id
)中创建Custom Field(后元),并保存要使用的库的ID。要创建短代码,请使用get_post_meta()
函数检索已保存的帖子元。
do_shortcode( sprintf( '[wonderplugin_gallery id="%d"]', get_post_meta( $post->ID, 'gallery_id', true ) ) );
要获取图库ID,请使用$post->ID
,$product->id
或get_the_ID()
函数,后者仅在循环内。