Galeria de covers (se puede usar una carpeta, estatica o dynamica)



Slider dynamicos con covers de TFC
Lo guardo por si en algun momento necesito utilzar CCT
Quedan muy bienn
Para usar con blog, contenido, en el dashboard probablemente y mas
Aca se puede usar todo totalmente libre. Diseño y query.Se configura asi:
Se configura asi:
Block principal:
* Sin loop
* Flex wrap = Wrap
* Se pone el column y row gap deseado = 30px por ejemplo
* Direccion = Horizontal (row). El dibujo de columnas
* Layout = 100% witdh (para que ocupe todo el anoche del contenedor donde este)
Block interno:
* Con loop (Y se elige el query deseado)
* Flex wrap = No wrap
* Direction = Vertical (dibujo tipo filas)
* Flex basis = calc((100% – (3 * 30px)) / 4)
Explicacion de la formula de calculo Flex basis: el 4 del final es la cantidad de columnas totoales que quiero, el 3 es restarle una para que no tenga el gap de la ultima, y el 30px es el gap que haya puesto en el block principal.
* Para 3 columnas y 20 de gap seria: calc((100% – (2 * 20px)) / 3)
* Para 2 columnas y 20 de gap seria: calc((100% – (1 * 20px)) / 2)
Para usar con blog, contenido, en el dashboard probablemente y mas
¡Sacate todas las dudas!
<?php
function restrict_entry_access_a($post_id) {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
if ( ! in_array( 'administrator', (array) $user->roles ) ) {
$user_id = get_current_user_id();
$product_ids = get_post_meta( $post_id, 'producto-relacionado', true );
if (empty($product_ids)){
return "Acceso permitido";
}
$completed_orders = wc_get_orders( array(
'customer_id' => $user_id,
'status' => 'completed',
) );
if (empty($completed_orders)){
return "no hay ordenes completadas";
}
$purchased_products = array();
foreach ( $completed_orders as $order ) {
$items = $order->get_items();
foreach ( $items as $item ) {
$purchased_products[] = $item->get_product_id();
}
}
if ( ! empty( $product_ids ) ) {
foreach ( $product_ids as $product_id ) {
if ( ! in_array( $product_id, $purchased_products ) ) {
return "Acceso denegado";
}
}
}
}
}
else {
return "Acceso denegado";
}
return "Acceso permitido";
}<?php
function restrict_entry_access_reply() {
if ( is_singular('content') ) {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
if ( ! in_array( 'administrator', (array) $user->roles ) ) {
global $post;
$user_id = get_current_user_id();
$product_ids = get_post_meta( $post->ID, 'producto-relacionado', true );
$completed_orders = wc_get_orders( array(
'customer_id' => $user_id,
'status' => 'completed',
) );
$purchased_products = array();
foreach ( $completed_orders as $order ) {
$items = $order->get_items();
foreach ( $items as $item ) {
$purchased_products[] = $item->get_product_id();
}
}
if ( ! empty( $product_ids ) ) {
$access = true;
foreach ( $product_ids as $product_id ) {
if ( ! in_array( $product_id, $purchased_products ) ) {
$access = false;
break;
}
}
if(!$access) {
return "Acceso denegado";
} else {
return "Acceso permitido";
}
} else {
return "Acceso denegado";
}
}
} else {
return "Acceso denegado";
}
}
}<?php
function purchased_products_ids() {
// Obtener el ID del usuario actual
$user_id = get_current_user_id();
// Obtener todos los pedidos del usuario actual
$customer_orders = wc_get_orders( array(
'customer_id' => $user_id,
) );
// Inicializar un array para almacenar los IDs de producto
$product_ids = array();
// Recorrer cada pedido
foreach ( $customer_orders as $order ) {
// Revisar si el pedido esta completado
if ($order->get_status() === 'completed') {
// Recorrer cada artículo del pedido
foreach ( $order->get_items() as $item ) {
// Añadir el ID del producto al array
$product_ids[] = $item->get_product_id();
}
}
}
// Eliminar los productos duplicados
$product_ids = array_unique( $product_ids );
// Imprimir los IDs de producto
return 'Product IDs: ' . implode( ', ', $product_ids );
}<?php
function active_memberships() {
// Obtener el ID del usuario actual
$user_id = get_current_user_id();
// Obtener las membresías activas del usuario actual
$user_memberships = wc_memberships_get_user_memberships( $user_id );
// Inicializar un array para almacenar los IDs de membresías
$memberships = array();
// Recorrer cada membresía
foreach ( $user_memberships as $user_membership ) {
// Revisar si la membresía esta activa
if ( 'active' === $user_membership->get_status() ) {
// Añadir el ID de la membresía y su nombre al array
$memberships[] = $user_membership->get_plan_id() . ' - ' . $user_membership->get_plan()->get_name();
}
}
// Eliminar los IDs de membresía duplicados
$memberships = array_unique( $memberships );
// Compruebe si el array de miembros está vacío o no
if (empty($memberships)) {
return 'Free';
} else {
// Imprimir los IDs de membresía y su nombre
return 'Memberships: ' . implode( ', ', $memberships );
}
}<?php
function restrict_entry_access() {
if ( is_singular('content') ) {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
if ( ! in_array( 'administrator', (array) $user->roles ) ) {
global $post;
$user_id = get_current_user_id();
$product_ids = get_post_meta( $post->ID, 'producto-relacionado', true );
$completed_orders = wc_get_orders( array(
'customer_id' => $user_id,
'status' => 'completed',
) );
$purchased_products = array();
foreach ( $completed_orders as $order ) {
$items = $order->get_items();
foreach ( $items as $item ) {
$purchased_products[] = $item->get_product_id();
}
}
if ( ! empty( $product_ids ) ) {
foreach ( $product_ids as $product_id ) {
if ( ! in_array( $product_id, $purchased_products ) ) {
wp_redirect( '/login/' );
exit;
}
}
}
}
}
else {
wp_redirect( '/login/' );
exit;
}
}
}
add_action( 'template_redirect', 'restrict_entry_access' );