私はプラグインを作成しており、ユーザーが選択できる投稿/ページのリストを作成したいと考えています。これは、エディターの「リンク」ボタンをクリックして「既存のコンテンツへのリンク」を下に回したときに表示されるリストとまったく同じです。 '-それを生成する関数をどこで見つけることができるか/どのように呼び出すかを誰かが知っていますか?
(私はwordpress.stackexchangeでこれを尋ねましたが、そこに投稿することは決してないようです:()
ありがとうホーボー!実際、私は自分の解決策を見つけたばかりで、あなたの答えを見たときにそれを投稿しようとしていました!
とにかく、誰かに役立つかもしれないので、ここに私の解決策を投稿します;)
だから、これは私が作った関数です(基本的にはclass_wp_editor.phpからニックネームを付けました-そこにある「wp_link_query」と実質的に同じです...)
function ican_edit_link_query( $args = array() ) {
$pts = get_post_types( array( 'public' => true ), 'objects' );
$pt_names = array_keys( $pts );
$query = array(
'post_type' => $pt_names,
'suppress_filters' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
'post_status' => 'publish',
'order' => 'ASC',
'orderby' => 'title',
'posts_per_page' => 200000,
);
$args['pagenum'] = isset( $args['pagenum'] ) ? absint( $args['pagenum'] ) : 1;
if ( isset( $args['s'] ) )
$query['s'] = $args['s'];
$query['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0;
// Do main query.
$get_posts = new WP_Query;
$posts = $get_posts->query( $query );
// Check if any posts were found.
if ( ! $get_posts->post_count )
return false;
// Build results.
$results = array();
foreach ( $posts as $post ) {
if ( 'post' == $post->post_type )
$info = mysql2date( __( 'Y/m/d' ), $post->post_date );
else
$info = $pts[ $post->post_type ]->labels->singular_name;
$results[] = array(
'ID' => $post->ID,
'title' => trim( esc_html( strip_tags( get_the_title( $post ) ) ) ),
'permalink' => get_permalink( $post->ID ),
'info' => $info,
);
}
}
すべての投稿が返されるように膨大な数の投稿を作成し、結果配列を反復処理してテーブルに詰め込みました。
次に、コードキャニオンで、バックエンドと同じように、検索ボックスに入力するとテーブルをフィルタリングする素晴らしいコードを見つけました。これはこちらhttp://codecanyon.net/item/advanced-tables/53366
明らかにコードを繰り返しているため、それが「正しい」方法であるかどうかはわかりません。おそらく、独自の引数でその関数を実行し、独自の関数の結果を処理することができます...私はそれを試して、合理化されたコードを投稿してください...
2014 年の更新として、Wordpress 3.7.0 以降、この目的に役立つ 2 つのフィルターが追加されました。
admin-ajax.phpこのリストは、 のパラメータを指定して を呼び出して作成されますwp-link-ajax。次に_WP_Editors::wp_link_query()(in wp-includes/class-wp-editor.php) を呼び出します。
コードを見ると、ページ番号および/または検索語のみを受け入れるようです。(たとえば) 返される投稿の数を変更することはできません (呼び出されるフィルター フックはありません)。それがあなたにとって問題になるかどうかはわかりません。
「それを生成した関数を見つけるにはどうすればよいですか」と答えるには、いくつかの方法があると思いますが、Tamper Data Firefox プラグインを使用しました。ブラウザがサーバーに対して行っている呼び出しを(何も改ざんせずに)監視し、どの呼び出しがリストを更新したかを確認しました。