0

まず、このリンクhttp://codex.wordpress.org/Integrating_WordPress_with_Your_Websiteを調べました。これは使えません。

自分が所有するリモート サーバーにインストールされている WordPress から最新の投稿を取得しようとしています。それらは同じデータベース サーバーを共有しているので、私は今、その場所に投稿してから、それを私の PHP アプリに戻しています。これはすべて機能します。

動かないのはディスプレイです。以前はnl2br新しい行を作成するために使用していましたが、これは正しく機能しません。

WordPress は後処理をp行って、段落と見なされる特定の行にタグを追加することに気付きました (たとえば、 uls やs ではありません)。liDB から投稿を取得した後にこれを行います (pタグは DB に保存されません)。

ソースコードで使用されている後処理を見つけようとしましたが、the_content関数などを見つけた後、空白になり、$postvar がどこから来たのかを調べましたが、探しているコードが見つかりませんでした。

これらの段落を追加して投稿を適切に見せるために、WordPress はどの後処理関数を使用しますか?

編集

ここの正規表現または一般的なPHPの人々のために、私は次のようなものを変更しようとしています:

<em><a href="link">awesome link</a></em>
<h3>Awesome Head</h3>
lalalaalal
<ul>
<li>Awesome li</li>
</ul>

次のようなものに:

<p>
    <em><a href="link">awesome link</a></em>
</p>
<h3>Awesome Head</h3>
<p>lalalaalal</p>
<ul>
<li>Awesome li</li>
</ul>

ややタグなど、明らかにp周囲にタグを付けてはならないタグ​​がありません。hulli

4

2 に答える 2

2

最も簡単で最速の方法: RSS フィードから最新の投稿を解析します。<p>自動的に追加されたすべてのタグが表示されます。

于 2012-09-24T10:50:16.503 に答える
0

@BryanHが言ったように、正しいことは次のとおりです。投稿が既にフォーマットされているRSSフィードを使用してください。

ただし、ブログ投稿を取得するためだけに XML パーサーを作成してそれに付随するすべてのものを処理したくない場合は、次のようなものを使用できます。

$content = preg_split('/\\r?\\n/', str_replace(']]>', ']]&gt;', $post->content));

foreach($content as $line){
    if(strlen(trim($line)) > 0){
        $line = trim($line);
        if(!preg_match('/^(<|<\/)(ul|li|div|h[1-6])/', $line)){
            echo '<p>'.$line.'</p>';
        }else{
            echo $line;
        }
    }
}

これは、最終的にこの問題を解決するために私が個人的に使用したコードです。

これを行うためのより堅牢で洗練された方法 (迅速にコード化) がある可能性がありますが、画像と多数の異なるタグを含む非常に複雑なブログ投稿でこれをテストしたところ、エラーなしでうまく機能するように見えました。

WPが何を使用しているのかはまだわかりませんが、これで最終的に問題が解決します。

于 2012-09-24T11:36:39.773 に答える