Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/09/2009, 08:16
sandinosaso
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 16 años, 5 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);
}
?>