使用WP 3.8.1,我有一个Custom Post Type
这被称为“Sport“它的Metdabox-medata数据如下:
我不需要设置网上购物,但我喜欢将我的产品价格添加到任何运动CPT中,并通过选中Sale on复选框并指定Sale amount或presentage来更新WP表中的价格。所以输出看起来像 我知道JavaScript可以在复选框上完成部分工作(如将Sale类添加到价格或将Sale图标添加到方框),但在WP端,我还需要更新表格以获取新价格,还可以列出每个CPT的所有待售项目。
你能告诉我怎么做吗?代码如下:
<?php
/* Custom Meta Boxex */
add_action(\'add_meta_boxes\', \'cpt_metadata_add\');
add_action(\'save_post\', \'save_options\');
function cpt_metadata_add()
{
add_meta_box(
"prodInfo-meta",
"New Dress Shoe Attributes ",
"render_meta_elemnts",
"sport",
"normal",
"low"
);
}
function render_meta_elemnts()
{
global $post;
$values = get_post_custom( $post->ID );
$price = isset( $values[\'metadata_price\'] ) ? esc_attr( $values[\'metadata_price\'][0] ) : \'\';
$sale = isset( $values[\'metadata_sale\'] ) ? esc_attr( $values[\'metadata_sale\'][0] ) : \'\';
$saleamount = isset( $values[\'metadata_sale_amount\'] ) ? esc_attr( $values[\'metadata_sale_amount\'][0] ) : \'\';
$salepercentage = isset( $values[\'metadata_sale_percentage\'] ) ? esc_attr( $values[\'metadata_sale_percentage\'][0] ) : \'\';
wp_nonce_field( \'my_meta_box_nonce\', \'meta_box_nonce\' );
?>
<table>
<tr>
<td><?php echo \'<label for="metadata_price">Price : $</label>\'; ?></td>
<td><?php echo \'<input name="metadata_price" value="\'. $price . \'" id="metadata_price" />\'; ?></td>
<td style="width:25px;"></td>
<td><?php echo \'<label for="metadata_sale">Sale On :</label> <input type="checkbox" name="metadata_sale" id="metadata_sale" <?php checked( $sale, \'on\' ); ?> />\'; ?></td>
<td><?php echo \'<label for="metadata_sale_percentage">Sale Percentage : %</label>\'; ?></td>
<td><?php echo \'<input name="metadata_sale_percentage" value="\'. $salepercentage . \'" id="metadata_sale_percentage" />\'; ?></td>
<td style="width:25px;"></td>
<td><?php echo \'<label for="metadata_sale_amount">Sale Amount : $</label>\'; ?></td>
<td><?php echo \'<input name="metadata_sale_amount" value="\'. $saleamount . \'" id="metadata_sale_amount" />\'; ?></td>
</tr>
</table>
<?php
}
function save_options()
{
global $post;
if (!isset($_POST[\'source\']) || $post->post_type != \'sport\'){
return $post;
}
update_post_meta($post->ID, "price", $_POST[\'price\']);
}
更新时间:<?php
$args = array( \'post_type\' => \'sport\');
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$meta = get_post_custom($post->ID);
the_title();
echo $meta[\'price\'][0];
endwhile;
?>
Update 2
<?php
$args = array( \'post_type\' => \'sport\');
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$meta = get_post_custom($post->ID);
if(metadata_sale = checked) {
echo $meta[\'metadata_price\'][0] - $meta[\'metadata_sale_percentage\'][0];
}
else{
echo $meta[\'metadata_price\'][0];
}
endwhile;
?>