Redireccionamiento a la URL de la frase recién creada

  • Autor Autor Franyer Rivas
  • Fecha de inicio Fecha de inicio
Franyer Rivas

Franyer Rivas

1
Pi
Verificado
Verificación en dos pasos activada
Verificado por Binance
Suscripción a IA
Saludos les comento un poco para que entiendan
estoy creando una web de frases para de facebook pero usando Wordpress
un ejemplo es esto que llevo Me Gusta
es cierto que hay por hay un script ya listo
pero es que lo quiero en wordpress para poder gestionar todas las frases y poder usar la potencia de este CMS de manera viral

lo cierto del caso es que mediante un pequeño formulario los vistantes publican sus entradas en el blog sin registrarse

usando esto
PHP:
<form id="formNew" name="new_post" method="post" action="">
<textarea id="title" tabindex="1" name="title" cols="50" rows="6" onmouseover="this.focus()" maxlength="5000" onkeyup="LimitInput(this.form.title,this.form.textcount,500);"></textarea>
</p>
<div style="float:center;margin-top:px;"><input type="submit" value="Crear Frase" tabindex="6" id="buttonNew" name="submit" />

<input type="hidden" name="post_type" id="post_type" value="post" />
<input id="buttonNew" type="hidden" name="action" value="post" />
<div style="float:right;margin-top:10px;"><input readonly type="text" name="textcount" size="2" value="500"></div>
<?php wp_nonce_field( 'new-post' ); ?>
</form>

eso esta en el index.php
en ese mismo archivo esta el este otro codigo que se encarga de insertar el post en la base de datos

PHP:
<?
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] )) {

    // Do some minor form validation to make sure there is content
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Please enter a title';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Please enter the content';
    }
    $tags = $_POST['post_tags'];

    // Add the content of the form to $post as an array
    $post = array(
        'post_title'    => $title,
        'post_content'    => $description,
        'post_category'    => $_POST['cat'],  // Usable for custom taxonomies too
        'tags_input'    => $tags,
        'post_status'    => 'publish',            // Choose: publish, preview, future, etc.
        'post_type'    => $_POST['post_type']  // Use a custom post type if you want to
    );
    wp_insert_post($post);  // Pass  the value of $post to WordPress the insert function
                            // [url=http://codex.wordpress.org/Function_Reference/wp_insert_post]Function Reference/wp insert post « WordPress Codex[/url]
    wp_redirect( home_url() );
} // end IF

// Do the wp_insert_post action to insert it
do_action('wp_insert_post', 'wp_insert_post'); 
?>

eso marcha de maravilla
cada frase se almacena como si de un post se tratara publicado por el usuario admin osea sho 😛7:
ahora bien si se fija en el ultimo codigo

hay esto
PHP:
 wp_redirect( home_url() );
que me redirecciona al home cada vez que se ejecuta el codigo para insertar el post

ahora lo que yo quiero es que en vez de redireccionarme a la pagina principal
me redireccione automaticamente a la url de la frase que se acaba de crear
osea al
PHP:
the_permalink()
pero he intentado de las mil formas y nada :sorrow:

alguien tiene la idea de que puede estar pasando ?
que estoy haciendo mal o que me falta hacer ?
es lo unico que me falta para terminar ese proyecto
si alguien me puede hechar una mano se lo agradesco
no duden en preguntar cualquier otra cosa por si no entienden lo que necesito :s
 
Última edición:
mmmm...
Pureba con una redireccion con javascript
quizas al hacerla en php produsca un error hay varias formas de hacer una redireccionn...
 
Última edición:
Donde tienes esto:

PHP:
    $post = array(
        'post_title'    => $title,
        'post_content'    => $description,
        'post_category'    => $_POST['cat'],  // Usable for custom taxonomies too
        'tags_input'    => $tags,
        'post_status'    => 'publish',            // Choose: publish, preview, future, etc.
        'post_type'    => $_POST['post_type']  // Use a custom post type if you want to
    );
    wp_insert_post($post);  // Pass  the value of $post to WordPress the insert function
                            // [url=http://codex.wordpress.org/Function_Reference/wp_insert_post]Function Reference/wp insert post « WordPress Codex[/url]
    wp_redirect( home_url() );

Debes cambiarlo por esto

PHP:
    // Add the content of the form to $post as an array
    $post = array(
        'post_title'    => $title,
        'post_content'    => $description,
        'post_category'    => $_POST['cat'],  // Usable for custom taxonomies too
        'tags_input'    => $tags,
        'post_status'    => 'publish',            // Choose: publish, preview, future, etc.
        'post_type'    => $_POST['post_type']  // Use a custom post type if you want to
    );

    $id_post = wp_insert_post($post);
   
    wp_redirect(get_permalink( $id_post ));

No te salia porque The_permalink te regresa la URL del Post donde estas ubicado, lo que tenias que hacer era usar el ID que te devuelve wp_insert_post, ya con el ID usas get_permalink para que te regrese la URL del Post publicado
 
lo acabo de aplicar pero me sigue dejando en el home
las frases se guardan en la base de datos correctamente como puedes observar pero no se me ocurre algo para que redireccione al post de la frase sin intervencion del usuario :ambivalence:
Donde tienes esto:

PHP:
    $post = array(
        'post_title'    => $title,
        'post_content'    => $description,
        'post_category'    => $_POST['cat'],  // Usable for custom taxonomies too
        'tags_input'    => $tags,
        'post_status'    => 'publish',            // Choose: publish, preview, future, etc.
        'post_type'    => $_POST['post_type']  // Use a custom post type if you want to
    );
    wp_insert_post($post);  // Pass  the value of $post to WordPress the insert function
                            // [url=http://codex.wordpress.org/Function_Reference/wp_insert_post]Function Reference/wp insert post « WordPress Codex[/url]
    wp_redirect( home_url() );

Debes cambiarlo por esto

PHP:
    // Add the content of the form to $post as an array
    $post = array(
        'post_title'    => $title,
        'post_content'    => $description,
        'post_category'    => $_POST['cat'],  // Usable for custom taxonomies too
        'tags_input'    => $tags,
        'post_status'    => 'publish',            // Choose: publish, preview, future, etc.
        'post_type'    => $_POST['post_type']  // Use a custom post type if you want to
    );

    $id_post = wp_insert_post($post);
   
    wp_redirect(get_permalink( $id_post ));

No te salia porque The_permalink te regresa la URL del Post donde estas ubicado, lo que tenias que hacer era usar el ID que te devuelve wp_insert_post, ya con el ID usas get_permalink para que te regrese la URL del Post publicado
 
lo acabo de aplicar pero me sigue dejando en el home
las frases se guardan en la base de datos correctamente como puedes observar pero no se me ocurre algo para que redireccione al post de la frase sin intervencion del usuario :ambivalence:

No tienes otro wp_redirect por algún lado, porque el que te pase debe redirigirte a la URL del Post publicado o también puede que sea la función esa que usas para "<?php wp_nonce_field( 'new-post' ); ?>" nunca la he usado

EDITO:

Ya vi algo sobre <?php wp_nonce_field( 'new-post' ); ?> y es para agregar los Posts a la base de datos y también estas usando wp_insert_post($post) que hace lo mismo, saca el wp_nonce_field( 'new-post' ) que es el que redirecciona

Aqui hablan sobre eso: http://wordpress.stackexchange.com/questions/11288/form-to-add-posts-to-custom-post-type
 
Última edición:
No tienes otro wp_redirect por algún lado, porque el que te pase debe redirigirte a la URL del Post publicado o también puede que sea la función esa que usas para "<?php wp_nonce_field( 'new-post' ); ?>" nunca la he usado

EDITO:

Ya vi algo sobre <?php wp_nonce_field( 'new-post' ); ?> y es para agregar los Posts a la base de datos y también estas usando wp_insert_post($post) que hace lo mismo, saca el wp_nonce_field( 'new-post' ) que es el que redirecciona

ya saque el <?php wp_nonce_field( 'new-post' ); ?>
y es el unico wp_redirect que hay en todo el code
y me sigue dejando en la misma home tengo toda la madrugada pensando que puede ser y nada :sorrow:
 
Si quisiera implementar este código en un sidebar, tendría que copiarlo tal cual en sidebar.php?

El problema me lo da la segunda parte del código, al copiarlo me da errores, y dice algo de un end inesperado, pero lo pego por pegar, al principio del archivo sidebar.php no se si será su situación correcta.

Un saludo
 
Bueno, esta interesante , pedi ayuda y se logro hacer funcionar, aqui codigo:

PHP:
<?
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] )) {

    // Do some minor form validation to make sure there is content
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Please enter a title';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        //exit();
    }
    $tags = $_POST['post_tags'];

    // Add the content of the form to $post as an array
        // Add the content of the form to $post as an array
    $post = array(
        'post_title'    => $title,
        'post_content'    => $description,
        'post_category'    => $_POST['cat'],  // Usable for custom taxonomies too
        'tags_input'    => $tags,
        'post_status'    => 'publish',            // Choose: publish, preview, future, etc.
        'post_type'    => $_POST['post_type']  // Use a custom post type if you want to
    );

    $id_post = wp_insert_post($post);
    //echo get_permalink( $id_post );
    wp_redirect(get_permalink( $id_post ));
} // end IF

// Do the wp_insert_post action to insert it
do_action('wp_insert_post', 'wp_insert_post'); 
?>

y el formulario
PHP:
<form id="formNew" name="new_post" method="post" action="">
<textarea id="title" tabindex="1" name="title" cols="20" rows="6" onmouseover="this.focus()" maxlength="5000" onkeyup="LimitInput(this.form.title,this.form.textcount,500);"></textarea>
</p>
<input type="submit" value="Crear Frase" tabindex="6" id="buttonNew" name="submit" />

<input type="hidden" name="post_type" id="post_type" value="post" />
<input id="buttonNew" type="hidden" name="action" value="post" />
<div style="float:right;margin-top:10px;"><input readonly type="text" name="textcount" size="2" value="500">
<?php wp_nonce_field( 'new-post' ); ?>
</form>

se ha probado en wordpress y funciona, se agradece el aporte .. saludos
 

Temas similares

David Morales
Respuestas
5
Visitas
135
David Morales
David Morales
mentordigital
Respuestas
0
Visitas
174
mentordigital
mentordigital
AndroidZone
Respuestas
2
Visitas
254
AndroidZone
AndroidZone
Atrás
Arriba