Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Post de productos

Estas en el tema de Post de productos en el foro de WordPress en Foros del Web. Estimados amigos: Tengo varios posts, los cuales son productos, divididos en categorias. Lo que desea hacer es tener en cada post campos para poder ingresar ...
  #1 (permalink)  
Antiguo 22/09/2009, 08:38
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Post de productos

Estimados amigos:

Tengo varios posts, los cuales son productos, divididos en categorias.

Lo que desea hacer es tener en cada post campos para poder ingresar por ejemplo codigo del producto, stock y precio..? La idea de tener estos datos por separado es para mostrarlos mejor en el listado de productos.

Como puedo hacer esto? hay alguna sugerencia mejor para lograr la misma tarea pero de otra forma??

Desde ya muchas gracias!!!

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #2 (permalink)  
Antiguo 23/09/2009, 13:25
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Post de productos

Lo que quieres es que cuando creas o editas un post tengas mas campos de texto para el codigo de producto stock y precio........
te entendi o no..
salu2
  #3 (permalink)  
Antiguo 23/09/2009, 13:43
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Post de productos

Hola:

Si, es asi y después como los listo en los post.

Lo que pasa que el sistema lo usará un cliente y no yo, por eso busco de hacerselo lo más simple posible.

Espero que puedas ayudarme.

Saludos y gracias...

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #4 (permalink)  
Antiguo 23/09/2009, 13:54
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Post de productos

ok y esos datos donde quedarian guardados ??
En el contenido del Post ???... o quieres aparte que esos datos vayan a
alguna otra tabla ?? cual serìa ??
salu2
  #5 (permalink)  
Antiguo 23/09/2009, 14:05
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Post de productos

Esos datos quedarían guardados con la info de cada post, ya que cada post sería un porducto.

Saludos.

ARMANDOWEB.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #6 (permalink)  
Antiguo 24/09/2009, 08:16
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Post de productos

PROBA esto:

Es un plugin que hice para vos.
Guardalo en la carpeta wp-content/plugins/campos_personalizados/ con el nombre campos_personalizados.php

Ve a la administracion y activa el plugin...
Lo que te agrega es al final de la pagina de nuevo post o de edicion de un post...un formulario para que agregues codigo stock y precio....es para que tengas una idea por donde puede ir la cosa...
Fijate que esta todo comentado lo que hice para que lo entendieras mejor...
Puedes cambiar de lugar el formulario que te agregue para que quede pegado a donde se edita el cuerpo del post...es a eleccion tuya...

Espero te sirva...probalo....salu2!!

Aca va el codigo:

<?php
/*
Plugin Name: Cualquiera
Plugin URI: http://localhost/
Description: Agregar campos personalizados a los posts
Version: 3.4.1
Author: Sandino
Author URI: http://sandino
*/

$campo1 = 'codigo';
$campo2 = 'stock';
$campo3 = 'precio';

$campos_metakey = 'campos_personalizados';

// Agrega el html que precisas cuando creas o editas posts
add_action('admin_footer', 'AgregarCampos');
// Cuando desactive el plugin se borran lo que guardamos en una tabla con esta funcion... // Si queres que se mantengan los campos_personalizados aunque desactives el plugin solo saca esta linea o comentala
add_action('deactivate_campos_personalizados/campos_personalizados.php', 'Desactivar_Plugin');

// Estas dos acciones hacen que se maneje el guardado o modificacion de la informacion de tus campos personalizados cuando se guarda/modifica/borra un post
add_action('edit_post', 'creacion_o_edicion_de_post');
//add_action('publish_post', 'creacion_o_edicion_de_post');

// AGREGAR HTML Para el crear y editar posts
function AgregarCampos($content) {
global $wpdb, $exc, $campos_metakey, $campo1, $campo2, $campo3;
// PARA QUE APAREZCA CUANDO SE CREAN O EDITAN POSTS..
if (preg_match('|post.php|i', $_SERVER['REQUEST_URI']) || preg_match('|post-new.php|i', $_SERVER['REQUEST_URI'])) {
/******************************************
* ACA HACES LA LOGICA QUE QUIERAS
******************************************/
$codigo = $wpdb->get_var("SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id = {$_REQUEST['post']} AND meta_key = '{$campo1}';");
$stock = $wpdb->get_var("SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id = {$_REQUEST['post']} AND meta_key = '{$campo2}';");
$precio = $wpdb->get_var("SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id = {$_REQUEST['post']} AND meta_key = '{$campo3}';");


if ($codigo == NULL) // Esto quiere decir que es nuevo que no existia el post
$nuevo=true;
?>

<div id="div_campos_personalizados" class="postbox">
<div title="Haz clic para abrir/cerrar" class="handlediv"><br/></div>
<h3 class="handle"><span>Ingrese CODIGO-STOCK-PRECIO :</span></h3>
Codigo:<input type="text" name="codigo" value="<?php echo $codigo ?>"/><br>
Stock:<input type="text" name="stock" value="<?php echo $stock ?>"/><br>
Precio:<input type="text" name="precio" value="<?php echo $precio ?>"/><br>
<input type="hidden" id="nuevo" name="nuevo" value="<?php echo $nuevo?>" />
<input type="hidden" id="test" name="test" value="true" />
</div>
<?php
echo' <script type="text/javascript">
<!--
var placement = document.getElementById(\'advanced-sortables\');
var substitution = document.getElementById(\'div_campos_personalizado s\');
var mozilla = document.getElementById && !document.all;
if (mozilla) {
placement.parentNode.parentNode.appendChild(substi tution);
} else {
placement.parentElement.parentElement.appendChild( substitution);
}
//-->
</script>
';
}

}

// Guarda los campos personalizados en wp_postmeta
function creacion_o_edicion_de_post($id) {
global $wpdb, $campo1, $campo2, $campo3;
if (!isset($id)) { $id= $_REQUEST['post_id']; }
if (isset($_REQUEST['test'])){

$codigo = $_REQUEST['codigo'];
$stock = $_REQUEST['stock'];
$precio = $_REQUEST['precio'];

$nuevo = $_REQUEST['nuevo'];

if ($nuevo){ // Si es nuevo lo agrego

$qry1 = "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) VALUES ({$id}, '{$campo1}','{$codigo}');";
$qry2 = "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) VALUES ({$id}, '{$campo2}','{$stock}');";
$qry3 = "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) VALUES ({$id}, '{$campo3}','{$precio}');";

//echo $qry1."<br>".$qry2."<br>".$qry3."<br><br>";

$wpdb->query($qry1);
$wpdb->query($qry2);
$wpdb->query($qry3);
}else{ // Si no es nuevo lo actualizo

$qry1 = "UPDATE {$wpdb->postmeta} SET meta_value = $codigo WHERE post_id = {$id} AND meta_key = '{$campo1}';";
$qry2 = "UPDATE {$wpdb->postmeta} SET meta_value = $stock WHERE post_id = {$id} AND meta_key = '{$campo2}';";
$qry3 = "UPDATE {$wpdb->postmeta} SET meta_value = $precio WHERE post_id = {$id} AND meta_key = '{$campo3}';";

//echo $qry1."<br>".$qry2."<br>".$qry3;

$wpdb->query($qry1);
$wpdb->query($qry2);
$wpdb->query($qry3);
}


}

}

// Borro todo lo que guarde en la tabla postmeta cuando se desactive el plugin (Es decir se pierden los campos personalizados)
function Desactivar_Plugin() {
global $wpdb, $campo1, $campo2, $campos_metakey;
$qry = "DELETE FROM {$wpdb->postmeta} WHERE meta_key = '{$campo1} || meta_key = '{$campo2} || meta_key = '{$campo3} ';";
$wpdb->query($qry);
$qry = "DELETE FROM {$wpdb->postmeta} WHERE meta_key = '{$campos_metakey}';";
$wpdb->query($qry);
}
?>
  #7 (permalink)  
Antiguo 24/09/2009, 08:24
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Post de productos

Cita:
Iniciado por armandoweb Ver Mensaje
Hola:

Si, es asi y después como los listo en los post.

ARMANDOWEB
Capaz agregando una funcion como un filter en el plugin que te pase y aplicandolo a la funcion que trae los posts pidiendo los valores de stock, precio y codigo para ese post de la tabla postmeta...y agregandolo al contenido de la salida de la funcion a traves del filter...
me parece que eso funciona...eso si es lo primero que se me viene a la cabeza..
comenten mejores opciones...
salu2
  #8 (permalink)  
Antiguo 24/09/2009, 09:28
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Post de productos

Sandinosaso:

Veo que trabajaste, eh???

Lo pruebo y te aviso como funciona.

Estuve viendo algunos articulos y el codex sobre los campos personalizados, así que con esas lecturas y tu código algo sacaré en limpio.

Colocaré el código final aquí por si alguno tiene la misma necesidad que yo.

Muchisimas gracias amigo!!!!

ARMANDOWEB
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #9 (permalink)  
Antiguo 02/10/2009, 15:16
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Post de productos

Estimado como va con eso...
cualquier cosa escriba nomas a mi mail...
Salu2
  #10 (permalink)  
Antiguo 03/10/2009, 08:25
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Post de productos

Hola:

He hecho una adaptación de un código que encontré.

Si desean puedo poner el código de campos personalizados que adapté.

Saludos a todos y gracias.

ARMANDOWEB.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:08.