Suporte » Plugins » Dificuldades em criar um editor front end

  • CRIANDO UM EDITOR FRONT END PARA MEU SITE

    Olá pessoal
    Estou criando um editor front end no meu site, o bjetivo é permitir que os usuários do site crie postagens sem ter que entrar no painel administrativo wordpress.
    O problema comessa quando insiro dois campos iguais como no exemplo abaixo:
    ————————————————
    Titulo do post [__________________]

    Descrição 01 [__________________]

    Descrição 02 [__________________]

    [enviar]
    ————————————————
    No exemplo acima as opçoes descrição 1 e descrição 2 funcionam normalmente
    ( mas se preecher os dois campos ao mesmo tempo, apenas uma descrição chega no post )
    Gostaria de saber como fazer funcionar as duas opções

    Estou enviando abaixo o codigo do plugin que que estou ultilizando.

    <?php
    /*
    Plugin Name: Simple Front End Posting
    Plugin URI: http://cozmoslabs.com/
    Description: Método simples para criação de artigos no Front End do WordPress
    Author: Cristian Antohe
    Version: 0.1
    Author URI: http://cozmoslabs.com/
    */
     
    function simple_fep($content = null) {
        global $post;
     
        ob_start();
     
    ?>
    <style>
    #fep-new-post label{display:inline-block;width:15%;}
    #fep-new-post input{width:60%;}
    #fep-new-post input[type=”submit”]{margin-left:15%;width:30%;padding:7px;}
    #fep-new-post textarea{ display:inline-block;width:80%;vertical-align:top;}
    </style>
    <div id=”simple-fep-postbox” class=”<?php if(is_user_logged_in()) echo ‘closed’; else echo ‘loggedout’?>”>
            <?php do_action( ‘simple-fep-notice’ ); ?>
            <div class=”simple-fep-inputarea”>
            <?php if(is_user_logged_in()) { ?>
                <form id=”fep-new-post” name=”new_post” method=”post” action=”<?php the_permalink(); ?>”>
                    <p><label>Title *</label><input type=”text” id =”fep-post-title” name=”post-title” /></p>
                    <p><label>Content *</label><textarea class=”fep-content” name=”posttext” id=”fep-post-text” tabindex=”1″ rows=”4″ cols=”60″></textarea></p>
                    <p><label>Tags</label><input id=”fep-tags” name=”tags” type=”text” tabindex=”2″ autocomplete=”off” value=”<?php esc_attr_e( ‘Adicionar tags’, ‘simple-fep’ ); ?>” onfocus=”this.value=(this.value=='<?php echo esc_js( __( ‘Adicionar tags’, ‘simple-fep’ ) ); ?>’) ? ” : this.value;” onblur=”this.value=(this.value==”) ? ‘<?php echo esc_js( __( ‘Adicionar tags’, ‘simple-fep’ ) ); ?>’ : this.value;” /></p>
                    <input id=”submit” type=”submit” tabindex=”3″ value=”<?php esc_attr_e( ‘Artigo’, ‘simple-fep’ ); ?>” />                
                    <input type=”hidden” name=”action” value=”post” />
                    <input type=”hidden” name=”empty-description” id=”empty-description” value=”1″/>
                    <?php wp_nonce_field( ‘new-post’ ); ?>
                </form>
            <?php } else { ?>    
                    <h4>Por favor faça login para criar artigo</h4>
            <?php } ?>
            </div>
     
    </div> <!– #simple-fep-postbox –>
    <?php
     
        $output = ob_get_contents();
        ob_end_clean();
     
        if (is_page()) return  $output;
    }
     
    add_shortcode(‘simple-fep’, ‘simple_fep’);
     
    function simple_fep_errors(){
    ?>
    <style>
    .simple-fep-error{border:1px solid #CC0000;border-radius:5px;background-color: #FFEBE8;margin: 0 0 16px 0px;padding: 12px;}
    </style>
    <?php
        global $error_array;
        foreach($error_array as $error){
            echo ‘<p class=”simple-fep-error”>’ . $error . ‘</p>’;
        }
    }
     
    function simple_fep_notices(){
    ?>
    <style>
    .simple-fep-notice{ border:1px solid #E6DB55;border-radius:5px;background-color: #FFFBCC;margin: 0 0 16px 0px;padding: 12px;}
    </style>
    <?php
     
        global $notice_array;
        foreach($notice_array as $notice){
            echo ‘<p class=”simple-fep-notice”>’ . $notice . ‘</p>’;
        }
    }
     
    function simple_fep_add_post(){
        if ( ‘POST’ == $_SERVER[‘REQUEST_METHOD’] && !empty( $_POST[‘action’] ) && $_POST[‘action’] == ‘post’ ){
            if ( !is_user_logged_in() )
                return;
            global $current_user;
     
            $user_id        = $current_user->ID;
            $post_title     = $_POST[‘post-title’];
            $post_content   = $_POST[‘posttext’];
            $tags           = $_POST[‘tags’];
     
            global $error_array;
            $error_array = array();
     
            if (empty($post_title)) $error_array[]=’Por favor adicione um título.’;
            if (empty($post_content)) $error_array[]=’Por favor adicione conteúdo.’;
     
            if (count($error_array) == 0){
     
                $post_id = wp_insert_post( array(
                    ‘post_author’   => $user_id,
                    ‘post_title’    => $post_title,
                    ‘post_type’     => ‘post’,
                    ‘post_content’  => $post_content,
                    ‘tags_input’    => $tags,
                    ‘post_status’   => ‘publish’
                    ) );           
     
                global $notice_array;
                $notice_array = array();
                $notice_array[] = “Obrigado por criar o artigo. O seu conteúdo foi publicado. “;
                add_action(‘simple-fep-notice’, ‘simple_fep_notices’);
            } else {
                add_action(‘simple-fep-notice’, ‘simple_fep_errors’);
            }
        }
    }
     
    add_action(‘init’,’simple_fep_add_post’);

    Tentei muito, resolver mas não tive susesso.
    Quem poder ajudar ficarei grato
    att Carlos

Visualizando 1 resposta (de um total de 1)
  • Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá @007carlos, tudo bem?

    Antes de mais nada, gostaria de lembrar que fica muito mais fácil postar código grande via pastebin. Tanto para você formatar, quanto para nós termos uma visualização melhor.

    Agora sobre o seu problema…

    No seu código não consegui identificar sua pergunta. Seu questionamento era porque não conseguia enviar o campo “descrição 1” e o campo “descrição 2” ao mesmo tempo.

    Já no seu código, só temos Title, Content e Tags.

    Mas de qualquer forma, gostaria de pontuar algumas dicas, para seus testes e desenvolvimento:

    1 – Os names dos inputs devem ser diferentes, senão só irá receber um valor no POST (a menos que esteja usando array, como por exemplo um name “tag[]”).
    2 – Os posts, por padrão possuem apenas 1 conteúdo. Logo, se quiser adicionar mais (descrição 2 por exemplo), vai precisar salvar como metadado. A menos que um seja conteúdo e o outro seja resumo (post_excerpt).
    3 – Vi que está usando a função wp_insert_post. Ela pode receber dentro do $postarr o valor meta_input para armazenar meta dados:

    wp_insert_post( array(
        'post_author'   => $user_id,
        'post_title'    => $post_title,
        'post_type'     => 'post',
        'post_content'  => $post_content,
        'tags_input'    => $tags,
        'post_status'   => 'publish'
        'meta_input'    => array(
            'conteudo_2'    => $post_content_two,
        ),
    ) );
    • Esta resposta foi modificada 7 anos, 2 meses atrás por Mário Valney.
Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Dificuldades em criar um editor front end’ está fechado para novas respostas.