WP高级自定义字段:WYSIWYG插入媒体链接

时间:2018-08-11 05:26:12

标签: php wordpress tinymce advanced-custom-fields wysiwyg

我希望我能正确解释这一点……很不幸,我没有代码要显示,但是我已经研究了很多,找不到任何帮助。作为参考,我还将ACF插件用于WordPress。我在ACF中将WYSIWYG设置为“仅视觉”和“简单”。

从本质上讲,我正在尝试自定义WordPress所见即所得菜单,尤其是“插入/编辑链接”按钮操作。当前,当您在“所见即所得”编辑器中单击该按钮时,它首先显示一个迷你编辑器,例如:

enter image description here

当您点击齿轮图标“链接选项”时,它会显示更多类似的选项:

enter image description here

但是列表中唯一的链接是“页面”(或帖子,但该网站没有任何帖子)。

我想做的还包括在列表中指向媒体文档的链接。 这样的事情一定是可能的,但是我一生都无法找出在哪里进行编辑。我想它一定是TinyMCE的一部分,但我不确定。有人处理过吗?

编辑:See my comment,其中包括对接受的答案的编辑以查看最终产品。

2 个答案:

答案 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,我将无法解决这个问题,因此我接受了给出问题的答案,但是我做了一些调整以满足我的特定需求。以下是更改列表:

  • 我只想要post_types为' page '和' attachment '(没有'post')
  • $result['info']已在适当的情况下从“媒体”更新为MIME类型
  • ' media '链接首先按MIME类型按字母顺序排序,然后按标题排序,' pages '始终在最上方,按标题按字母顺序排序
  • 我打算过滤掉某些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;
}