WordPressサイトで投稿を表示する順序を指定する投稿IDのコンマ区切りリストを生成するphp関数があります。
次のようなSQLクエリを挿入できる場所を探しています。
SELECT * FROM wp_posts WHERE ID IN ('1', '2', '3')
どの.phpファイルを変更する必要がありますか?SQLをどのように表現すればよいですか?
php関数をファイル(ルートワードプレスフォルダー)/wp-content/themes/(テーマの名前)/functions.phpに貼り付けます。SQLクエリは次のようになります。
$sql=$wpdb->prepare("SELECT * FROM wp_posts WHERE ID IN ('1', '2', '3');");
$results=$wpdb->get_results($sql);
echo ">>>>".$result[0]->something."<br />";//blah blah...
うわー、私は$ wpdpをグローバルとして言及しませんでしたが、それでもコードは私のシステムで正常に機能していました!とにかく、関数に「グローバル$wpdb」と書くことをお勧めします。
ここでの主な質問は、この関数をどこから呼び出すべきかということです。あなたはtheme/(あなたのテーマ)/index.phpからそれを呼び出さなければなりません
現在のテーマで投稿がどのように生成されるかを理解してみてください。そうすれば、必要なことができるかもしれません。
まず、これに使用する必要がありますwp_query
。投稿をクエリするように設計されています。
<?php
$args = array(
'post__in' => array ( 1,2,3) //the Ids
);
$query = new WP_Query($args);
if ($query->have_posts()){
while ($query->have_posts()) {
$query->the_post();
echo get_the_ID().'<br/>';
}
} else {
echo 'no posts found';
}
配置については、カスタムテンプレート
で
行うことをお勧めします。上記のコードを使用して単純なテンプレートを作成し、ページを作成してそのテンプレートを割り当て、ページを非公開にします。
global $wpdb; $results = $wpdb->get_results("SELECT * FROM {$wpdb->posts} WHERE ID IN (1, 2, 3) ORDER BY ID");
これは、テーマのfunctions.phpファイルで使用できます。