2

独自のテーブルを持つプラグインを開発しています。Wordpress フロントエンド (例: カテゴリ ページ) のテーブルからデータを表示する必要があります。このテーブルを posts テーブルと JOIN する必要はありません。テーブルのデータをページネーションで表示するだけで済みます。プラグイン ディレクトリ (MVC フレームワーク — コントローラーのコンテキストで話します) とは別のページ/カスタム テンプレートが必要で、このデータを表示してページ分割する必要があります。

アドバイスをください、それを実装するためのベストプラクティスは何ですか?

ありがとう。

4

1 に答える 1

3

あなたの質問を理解したらtemplate_include、プラグインディレクトリからカスタムテンプレート/ページを使用するためのフックを追加する必要があると思います.

add_filter('template_include', 'my_template', 1, 1); 
function my_template($template) { 
    global $post; 
    if($post->post_content == '[myPluginPage]') 
        return dirname(__FILE__) . '/my_pligin_template.php'; 
        return $template; 
}

上記のコードをプラグイン ファイルに貼り付け、プラグイン フォルダーに名前などのファイルを作成するmy_pligin_template.php必要がありますが、この場合、最初の return ステートメントでファイル名も変更する必要があります。

ここで、wordpress admin でページを作成してメニュー バーにページを表示し[myPluginPage]、コンテンツとして貼り付ける必要があります。これif($post->post_content == '[myPluginPage]')は、メニュー項目をクリックするたびにプラグイン ページかどうかをチェック[myPluginPage]し、コンテンツ内に単語が見つかった場合はカスタム テンプレートを返し、そのページに移動します。

次に、データベースからデータをフェッチする必要があります。そのためには、このカスタム テンプレート ファイル (my_pligin_template.php) にコードを記述する必要があります。それを行うには、次のように書くことができます

global $wpdb;
$pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 1;
$limit = 10;
$offset = ($pagenum-1) * $limit;
$total = $wpdb->get_var( "SELECT COUNT(*) FROM yourtable" );
$num_of_pages = ceil( $total / $limit );

$qry="select * from yourtable LIMIT $offset, $limit";
$result=$wpdb->get_results($qry);
if($result):
    foreach($result as $row)
    {
        // code here
    }

    //Link for Pagination
    $page_links = paginate_links( array(
        'base' => add_query_arg( 'pagenum', '%#%' ),
        'format' => '',
        'prev_text' => __( '«', 'aag' ),
        'next_text' => __( '»', 'aag' ),
        'total' => $num_of_pages,
        'current' => $pagenum
    ) );
    if ( $page_links ) {
        echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>';
    }
endif;
于 2012-10-13T18:49:12.357 に答える