有没有办法让我的wordpress站点指向diste/templates目录中的index.html,而不是正常的wordpress行为?

wfsdck30  于 2023-03-29  发布在  WordPress
关注(0)|答案(2)|浏览(134)

我正在使用Vue.js开发一个无头WordPress站点,我有一个名为vue-wordpress的自定义主题。该主题使用Vue CLI进行scafolded。下面是目录结构-

  • 资产
  • 模板
  • 公众
  • SRC
  • 模板
  • functions.php
  • package.json
  • theme.json
  • style.css

我希望当我的网站加载它指向的文件是dist/templates/index.html而不是templates/index.html
有人知道怎么做到吗?
谢谢大家。

new9mtju

new9mtju1#

如果你想改变包含文件的路径,在你的functions.php中搜索templates/index.html,然后用dist/templates/index.html替换它。然而,简单地包含vue模板附带的html文件会导致各种问题,可能不是你真正想做的。
如果你想使用Vue作为一个无头WordPress示例的SPA前端,我建议你看看bshiluk/vue-wordpress主题,它有很多现成的功能。如果你想手工完成,我建议你阅读tutorial

t9aqgxwy

t9aqgxwy2#

@superEwald感谢您分享您对这个问题的看法.我检查了这两篇文章,我认为他们是优秀的资源.我刚刚通过在我的functions.php中添加以下代码修复了这个问题-

<?php
/**
 * Portfolio functions and definitions
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package WordPress
 * @subpackage Portfolio
 * @since Portfolio 1.0
 */

// Remove all default WP template redirects/lookups
remove_action( 'template_redirect', 'redirect_canonical' );

// Redirect all requests to index.html so the Vue app is loaded and 404s aren't thrown
function remove_redirects() {
    add_rewrite_rule( '^/(.+)/?', 'index.html', 'top' );
}
add_action( 'init', 'remove_redirects' );

// Load scripts
function load_vue_scripts() {
    $theme_version = wp_get_theme()->get( 'Version' );
    $version_string = is_string( $theme_version ) ? $theme_version : false;

    wp_enqueue_script(
        'vuejs',
        get_template_directory_uri() . '/src/main.js',
        array(),
        $version_string
    );

    wp_enqueue_style(
        'vuejs-css',
        get_template_directory_uri() . '/src/assets/main.css',
        $version_string
    );
}
add_action( 'wp_enqueue_scripts', 'load_vue_scripts');

function add_type_attribute($tag, $handle, $src) {
    // change the script tag by adding type="module" and return it.

    if ( 'vuejs' === $handle ) {
        $tag = '<script type="module" src="' . esc_url( $src ) . '"></script>';
        return $tag;
    }
}
add_filter('script_loader_tag', 'add_type_attribute' , 10, 3);

我不知道这是否是正确的修复,但我会继续我构建的SPA应用程序。我也希望你对这段代码有什么想法。

相关问题