0

**編集

今は大丈夫です、私はそれを修正しました!追加した

    add_action('init', 'kses_init');

これは安全ではないことを意味していることは知っていますが、フォームには多くの検証が含まれているので、問題ないと思います。これを行うためのより良い方法を誰かが考えられるなら、私はそれを知っているのが大好きです。コーディングとPHPに精通しているわけではありませんが、私が知っていることはすべて、Googlelooolを介して自分で学んだことです。

ありがとう


基本的に、このサイトとそのチュートリアルの負荷を使用して、私は自分のWebサイトの「PostFromFrontEnt」フォームを作成することができました。管理者としてサインインしている場合は完全に機能しますが、他のアカウントでサインインしている場合は、コードが分解され、投稿か​​らすべてのHTMLが削除されます。

何が悪いのかまったくわかりません。投稿を自動的に管理者に帰属させるように設定しようとしましたが、改善されていません。

通常のアカウントで投稿すると、投稿は次のようになります:http: //i.stack.imgur.com/xwbIK.png

誰かがこの問題を修正することができれば、私はばかげて感謝するでしょう!

コードを確認する必要がある場合は、私に知らせて、貼り付けてください。

OK、modからのアドバイスの後、摩耗するコードの一部は投稿コンテンツだと思います。入力したコードからすべてのHTMLが削除されます。投稿用に持っているコードは以下のとおりです。ビットは文字列の定義であり、2番目はポストスクリプトです。

    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_artist    = $_POST['video-artist'];
    $anti_spam   = $_POST['anti-spam'];
    $artist_twitter     = $_POST['artist-twitter'];
    $post_cat   = array(intval($_POST['post-category']));
    $twitter_trimmed = ltrim($artist_twitter, "@.");
    $video_type     = $_POST['video-type'];
    $fv_video     = $_POST['fv_video'];
    $post_content   = $_POST['posttext'];
    $tags           = $_POST['tags'];
    $headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $fv_video);
    $user_infos = 'http://api.twitter.com/1/users/show.xml?screen_name='.$twitter_trimmed;
    $content = '<style>.video-box{ border:1px solid #efefef;height:100%;padding:15px;background:#fff;}</style><div class="video-box"><iframe width="595" height="350" src="http://www.youtube.com/embed/'.$fv_video.'?rel=0" frameborder="0" allowfullscreen></iframe></div><style>.desc-box{ border:1px solid #efefef;height:100%;margin-top:10px;margin-bottom:10px;padding:15px;background:#fff;}</style><div class="desc-box"><h4>description</h4>'.$post_content.'</div>';

このビットは、エラーメッセージなどを定義する場所です-ここでは何も間違っていないことを確認します

    if (count($error_array) == 0){

    remove_filter('pre_user_description', 'wp_filter_kses');


    function my_change_author( $data , $postarr )

    {

     $data['post_author'] = 2;

      return $data;

    }


    add_filter('wp_insert_post_data' , 'my_change_author' , '99', 2);

        $new_post = array(
            'post_author' => '2',
            'post_title'    => $post_artist. ' &ndash; ' .$post_title. ' [Guest Post] ['.$video_type.' Video] [@'.$twitter_trimmed.']',
            'post_type'     => 'post',
            'post_content'  => $content,
            'tags_input'    => $tags,
            'post_category' => $post_cat,
            'post_status'   => 'publish'
            );  


    //SAVE THE POST

    $pid = wp_insert_post($new_post);

    //SET OUR TAGS UP PROPERLY

       wp_set_post_tags($pid, $_POST['tags']);

    global $notice_array;
        $notice_array = array();
        $notice_array[] = "Thank you for posting. Your post is now live. Go 
    to the homepage to view it!";
        add_action('simple-fep-notice', 'simple_fep_notices');
    } else {
        add_action('simple-fep-notice', 'simple_fep_errors');
    }
}

    }


    add_action('init','simple_fep_add_post');

    //POST THE POST YO
do_action('wp_insert_post', 'wp_insert_post'); "

これでコードは終わりです

編集*

もう少しいじくり回した後、WPがポストIEからすべてのコードを削除するという問題に向かって動いています。「style」タグと「div」タグはビデオ埋め込みコードと一緒に削除されます...WPがフォーマットされないようにする方法はありますか何が入力されていますか?

*もう一度編集***

これはもう少しいじくり回した後の文字列の定義です。サイトにスタイルを投稿させることができました。投稿からIframeを削除し続けます...何かアイデアはありますか?

      global $user_ID;

    $post_title     = $_POST['post-title'];
    $post_artist    = $_POST['video-artist'];
    $anti_spam   = $_POST['anti-spam'];
    $artist_twitter     = $_POST['artist-twitter'];
    $post_cat   = array(intval($_POST['post-category']));
    $twitter_trimmed = ltrim($artist_twitter, "@.");
    $video_type     = $_POST['video-type'];
    $fv_video     = $_POST['fv_video'];
    $post_content   = $_POST['posttext'];
    $tags           = $_POST['tags'];
    $headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $fv_video);
    $user_infos = 'http://api.twitter.com/1/users/show.xml?screen_name='.$twitter_trimmed;
    $content = '<div style="border:1px solid #efefef;height:100%;padding:15px;background:#fff;"><iframe width="595" height="350" src="http://www.youtube.com/embed/'.$fv_video.'?rel=0" frameborder="0" allowfullscreen></iframe></div><div style="border:1px solid #efefef;height:100%;margin-top:10px;margin-bottom:10px;padding:15px;background:#fff;"><h4>description</h4>'.$post_content.'</div>';
4

1 に答える 1

0

編集

今は大丈夫です、私はそれを修正しました!追加した

add_action('init', 'kses_init');

これが安全でないことを意図していることはわかっていますが、フォームには多くの検証が含まれているため、問題ないと思います。誰かがこれを行うためのより良い方法を考えることができれば、私は知りたい.

于 2012-11-21T01:17:17.420 に答える