我将用在我的网站嵌入浏览器谷歌的书籍,运行使用Wordpress CMS和Woocommerce插件。
我的想法是,为每个产品一个Woocommerce属性(这里的一本书)被分配给相关的书籍谷歌图书编号(类似0738531367),然后使用一个方法,这个字符串被插入到观看者的脚本它最简单的形式如下其中,
<script type="text/javascript" src="http://books.google.com/books/previewlib.js"></script>
<script type="text/javascript">
GBS_insertEmbeddedViewer('4rghAwAAQBAJ',600,500);
</script>
现在,我怎样才能从Woocommerce提取此字符串(属性),并把它在浏览器的脚本?
更多的专项说明
这是一本书页 (一WooCommerce产品页)。
该页面提供的书,已经对谷歌图书ID的值的属性。 它可以在“مشخصاتکتاب”选项卡中的最低行被发现。
将这个ID到上面的代码,并把整个修改后的代码在书页的HTML代码后,著名的谷歌图书的嵌入式浏览器与此对应的书,出现在“توضیحناشر”选项卡。
但是,这个过程是耗时的,当我面对要添加的图书数量巨大几乎是不可能的。
这是很简单的。 一旦嵌入在WooCommerce(或主题) 模板页面的浏览器代码。 因此,对于每个书籍的唯一努力就是在预定义的属性定义所谓的书ID。
毕竟,下一个任务:这个ID转移到浏览器的代码。 我认为它可以使用WordPress的钩子,PHP函数等进行处理。 不幸的是搜索网没有结果(包括谷歌图书支持论坛和WordPress支持目录)。
它可以集成到WC产品meta框 (也见文档 ),但我会展示如何在一个正常的meta框做。
<?php
/**
* Plugin Name: (SO) Book ID
*/
add_action( 'add_meta_boxes', 'add_box_so_26564103' );
add_action( 'save_post', 'save_so_26564103', 10, 2 );
function add_box_so_26564103() {
add_meta_box(
'sectionid',
'Book ID',
'inner_box_so_26564103',
'product',
'side',
'low'
);
}
function inner_box_so_26564103($post)
{
wp_nonce_field( plugin_basename( __FILE__ ), 'noncename' );
$saved = get_post_meta( $post->ID, '_book_id', true);
printf(
'<label>Enter the ID <input type="text" name="_book_id" value="%s" /></label>',
$saved ? $saved : ''
);
}
function save_so_26564103( $post_id, $post_object )
{
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
if ( !wp_verify_nonce( $_POST['noncename'], plugin_basename( __FILE__ ) ) )
return;
if ( 'revision' == $post_object->post_type )
return;
if ( isset( $_POST['_book_id'] ) )
update_post_meta( $post_id, '_book_id', $_POST['_book_id'] );
else
delete_post_meta( $post_id, '_book_id' );
}
然后,在你的模板,只是检索元数据:
<script type="text/javascript" src="http://books.google.com/books/previewlib.js"></script>
<script type="text/javascript">
GBS_insertEmbeddedViewer('<?php echo get_post_meta( $post->ID, "_book_id", true); ?>',600,500);
</script>