WordPressの親・子テーマが編集できない場合、プラグインによるカスタマイズが必要となります。
そんなときにプラグインからテンプレートファイルを置き換える方法について。
テンプレートファイルの置き換え方法
プラグインからtemplate_includeフックでメソッドを実行します。
プラグインのフォルダ構造
custom-plugin
│  custom-plugin.php
└─templates
        archive.php
        single.php実際のコード例
投稿タイプworksのアーカイブや詳細ページのテンプレートを置き換える場合は以下のようにします。
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
define( 'MY_CUSTOM_PLUGIN', __FILE__ );
define( 'MY_CUSTOM_PLUGIN_DIR', untrailingslashit( dirname( MY_CUSTOM_PLUGIN ) ) );
class Customize_Plugin {
    function __construct() {
        // フック
        add_filter( 'template_include', array( $this, 'template_replacement' ), 10 );
    }
    // テンプレートの置き換え
    function template_replacement( $template_path ) {
        // worksアーカイブの場合
        if( is_post_type_archive( 'works' ) ) {
            $theme_file = MY_CUSTOM_PLUGIN_DIR . '/templates/archive.php';
            $template_path = $theme_file;
        }
        // works詳細の場合
        if ( is_singular( 'works' ) ) {
            $theme_file = MY_CUSTOM_PLUGIN_DIR . '/templates/single.php';
            $template_path = $theme_file;
        }
        return $template_path;
    }
}
new Customize_Plugin();get_template_partを使っている箇所の対応
get_template_part()はどうやら読み込みファイルを変更するフックがないようでした。
なので、以下のようにincludeを使った読み込みに変更する必要があります。
while ( have_posts() ) :
    the_post();
    include MY_CUSTOM_PLUGIN_DIR . '/templates/content.php';
endwhile;参考ソース:template.php in tags/3.7.1/src/wp-includes – WordPress Trac