wordpress - the_content - WP-WooCommerce enumera todos los productos con ventas totales
wordpress php get post title by id (2)
¿Cómo enumerar todos los productos de WooCommerce con ventas totales? Este código es solo para 1 producto. No funciona si se coloca una matriz en $ producto.
<?php
$product = "13";
$units_sold = get_post_meta( $product, ''total_sales'', true );
echo ''<p>'' . sprintf( __( ''Units Sold: %s'', ''woocommerce'' ), $units_sold ) . ''</p>'';
?>
Quiero en la salida, el formato será así:
[PRODUCT_NAME] - [TOTAL_SALES]
Alguien sabe cómo hacer esto? Gracias. :)
Para eso puede usar la función estándar get_posts () con parámetros de campo personalizados. El siguiente ejemplo tomará todas las publicaciones con ventas mayores a cero en orden descendente, si desea obtener todos los productos, elimine la parte de la metacompetencia de la matriz de argumentos. El resultado está formateado en una tabla HTML.
$args = array(
''post_type'' => ''product'',
''posts_per_page'' => -1,
''meta_key'' => ''total_sales'',
''orderby'' => ''meta_value_num'',
''order'' => ''DESC'',
''meta_query'' => array(
array(
''key'' => ''total_sales'',
''value'' => 0,
''compare'' => ''>''
)
)
);
$output = array_reduce( get_posts( $args ), function( $result, $post ) {
return $result .= ''<tr><td>'' . $post->post_title . ''</td><td>'' . get_post_meta( $post->ID, ''total_sales'', true ) . ''</td></tr>'';
} );
echo ''<table><thead><tr><th>'' . __( ''Product'', ''woocommerce'' ) . ''</th><th>'' . __( ''Units Sold'', ''woocommerce'' ) . ''</th></tr></thead>'' . $output . ''</table>'';
Prueba este código Te dará salida en 2 formatos
<?php
global $wpdb;
$results = $wpdb->get_results("SELECT p.post_title as product, pm.meta_value as total_sales FROM {$wpdb->posts} AS p LEFT JOIN {$wpdb->postmeta} AS pm ON (p.ID = pm.post_id AND pm.meta_key LIKE ''total_sales'') WHERE p.post_type LIKE ''product'' AND p.post_status LIKE ''publish''", ''ARRAY_A'');
?>
<table>
<tr>
<th><?php _e( ''Product'' ); ?></th>
<th><?php _e( ''Unit sold'' ); ?></th>
</tr>
<?php
foreach ( $results as $result ) {
echo "<tr>";
echo "<td>" . $result[''product''] . "</td>";
echo "<td>" . $result[''total_sales''] . "</td>";
echo "</tr>";
}
?>
</table>
<div>
<p><strong><?php echo __( ''Product'' ) . '' - '' . __( ''Unit Sold'' ); ?></strong></p>
<?php
foreach ( $results as $result ) {
echo "<p>" . $result[''product''] . '' - '' . $result[''total_sales''] . "</p>";
}
?>
</div>
Esperamos que esto sea útil