我正在编写一个插件,我想创建一个用户可以选择的帖子/页面列表完全,就像您单击“链接”按钮时所看到的列表一样编辑和旋转'或链接到现有内容' - 有谁知道我在哪里可以找到/如何调用生成它的功能?
(我在wordpress.stackexchange中问过这个问题,但我似乎从未在任何地方发帖:()
答案 0 :(得分:3)
谢谢Hobo!实际上我刚刚找到了自己的解决方案,当我看到你的答案时就准备发布了它!
无论如何,我会在这里发布我的解决方案,因为它可能对某人有用;)
所以这就是我所做的功能(基本上我从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
我不确定这是否是“正确”的方式,因为显然我正在重复代码 - 可能你只需要用自己的args运行该函数,然后只处理你自己函数的结果......我会尝试一下并发布一些简化的代码......
答案 1 :(得分:1)
使用参数admin-ajax.php
调用wp-link-ajax
来填充该列表。这反过来调用_WP_Editors::wp_link_query()
(在wp-includes/class-wp-editor.php
中)。
查看代码,它似乎只接受页码和/或搜索词 - 您无法更改(例如)返回的帖子数(没有调用过滤器挂钩)。不确定这对你来说是否有问题。
要回答“如何找到生成该功能的功能”,我想有多种方法,但我使用的是Tamper Data Firefox插件。我看了浏览器对服务器的调用(没有篡改任何东西),看到哪个调用更新了列表。
答案 2 :(得分:1)
作为2014年的更新,现在有two useful filters用于此目的,因为Wordpress 3.7.0。