我希望我能正确解释这一点……很不幸,我没有代码要显示,但是我已经研究了很多,找不到任何帮助。作为参考,我还将ACF插件用于WordPress。我在ACF中将WYSIWYG设置为“仅视觉”和“简单”。
从本质上讲,我正在尝试自定义WordPress所见即所得菜单,尤其是“插入/编辑链接”按钮操作。当前,当您在“所见即所得”编辑器中单击该按钮时,它首先显示一个迷你编辑器,例如:
当您点击齿轮图标“链接选项”时,它会显示更多类似的选项:
但是列表中唯一的链接是“页面”(或帖子,但该网站没有任何帖子)。
我想做的还包括在列表中指向媒体文档的链接。 这样的事情一定是可能的,但是我一生都无法找出在哪里进行编辑。我想它一定是TinyMCE的一部分,但我不确定。有人处理过吗?
编辑:See my comment,其中包括对接受的答案的编辑以查看最终产品。
答案 0 :(得分:2)
将它们添加到主题的“ functions.php”中。
// Query for attachments
add_filter( 'wp_link_query_args', 'my_modify_link_query_args' );
function my_modify_link_query_args( $query ) {
$query['post_status'] = array('publish','inherit');
return $query;
}
// Link to media file URL instead of attachment page
add_filter( 'wp_link_query', 'my_modify_link_query_results' );
function my_modify_link_query_results( $results, $query ) {
foreach ( $results as &$result ) {
if ( 'Media' === $result['info'] ) {
$result['permalink'] = wp_get_attachment_url( $result['ID'] );
}
}
return $results;
}
答案 1 :(得分:0)
没有Outsource WordPress's answer,我将无法解决这个问题,因此我接受了给出问题的答案,但是我做了一些调整以满足我的特定需求。以下是更改列表:
$result['info']
已在适当的情况下从“媒体”更新为MIME类型这是添加到 functions.php 中的最终代码:
// Query for attachments
add_filter( 'wp_link_query_args', 'link_query_args' );
function link_query_args( $query ) {
$query['post_status'] = array('publish','inherit');
$query['post_type'] = array('page','attachment');
return $query;
}
// Link to media file URL instead of attachment page
add_filter( 'wp_link_query', 'link_query_results' );
function link_query_results( $results ) {
foreach ( $results as $index => &$result ) {
if ( $result['info'] === 'Page' ) {
$pageArr[] = $result;
}
if ( $result['info'] === 'Media' ) {
/*
// Remove certain MIME types
if( in_array( get_post_mime_type( $result['ID'] ), array('image/jpeg') ) ){
unset($results[$index]);
}
*/
$result['permalink'] = wp_get_attachment_url( $result['ID'] );
$result['info'] = get_post_mime_type( $result['ID'] );
$mediaArr[] = $result;
}
}
usort($pageArr, function($a, $b){
return strcmp($a['title'], $b['title']);
});
array_multisort(array_column($mediaArr, 'info'), SORT_ASC, SORT_STRING,
array_column($mediaArr, 'title'), SORT_ASC, SORT_STRING,
$mediaArr);
$results = array_merge($pageArr, $mediaArr);
return $results;
}