我正在构建一个WordPress插件,它创建一个管理菜单并将值存储在WordPress后端,然后在公共页面上显示存储的值.但是代码并没有创建一个公共页面,我想在其中加载一个定制的Reaction页面.

在根目录中,我有wp-action-kickoff.php文件,如下所示

<?php
/**
 * Plugin Name: Batmobile Design
 * Author: Batman
 * Author URI: 
 * Version: 1.0.0
 * Description: WordPress React KickOff.
 * Text-Domain: wp-react-kickoff
 */

if( ! defined( 'ABSPATH' ) ) : exit(); endif; // No direct access allowed.

/**
* Define Plugins Contants
*/
define ( 'WPRK_PATH', trailingslashit( plugin_dir_path( __FILE__ ) ) );
define ( 'WPRK_URL', trailingslashit( plugins_url( '/', __FILE__ ) ) );

/**
 * Loading Necessary Scripts
 */
add_action( 'admin_enqueue_scripts', 'sd_scripts' );
function sd_scripts() {
    wp_enqueue_script( 'wp-react-kickoff', WPRK_URL . 'dist/bundle.js', [ 'jquery', 'wp-element' ], wp_rand(), true );
    wp_localize_script( 'wp-react-kickoff', 'appLocalizer', [
        'apiUrl' => home_url( '/wp-json' ),
        'nonce' => wp_create_nonce( 'wp_rest' ),
    ] );
}

require_once WPRK_PATH . 'classes/class-create-admin-menu.php';
require_once WPRK_PATH . 'classes/class-create-settings-routes.php';
require_once WPRK_PATH . 'classes/class-public-page.php';


然后,我创建了一个名为CLASS的文件夹,其中有

class-create-admin-menu.php, 
class-create-settings-routes.php, 
class-public-page.php, 
wprk-public-page-template.php.

特定于创建公共页面的代码如下所示

<?php
/**
 * This file will create Public Page
 */


function wprk_create_public_page() {
    $page = [
        'post_type' => 'Automatic page',
        'post_title' => 'WP React KickOff Public Page',
        'post_content' => 'asasasas',
        'post_status' => 'publish',
        'post_author' => 1,
    ];
    $page_id = wp_insert_post( $page );
    update_post_meta( $page_id, '_wp_page_template', 'wprk-public-page-template.php' );
}

register_activation_hook( __FILE__, 'wprk_create_public_page' );


和我的wprk-public-page-template.php


<div id="wprk-public-app"></div>
<?php
wp_enqueue_script( 'wp-react-Kickoff', WPRK_URL . 'dist/bundle.js', [], wp_rand(), true );
wp_localize_script( 'wp-react-Kickoff', 'appLocalizer', [
        'apiUrl' => home_url( '/wp-json' ),
        'nonce' => wp_create_nonce( 'wp_rest' ),
    ] );

在ReactFolders中,我有App.js,这两个设置(这是管理菜单,它工作正常)和公共页面呈现如下

import React from 'react';
import PublicPage from './components/PublicPage';
import Settings from './components/Settings';

function App() {
    return(
        <React.Fragment>
            <Settings />
            <PublicPage />
        </React.Fragment>
    )
}
export default App;


为了进行测试,让公共页面如下所示


import axios from 'axios';

const apiUrl = appLocalizer.apiUrl;
const nonce = appLocalizer.nonce;



import React from 'react';

function PublicPage(props) {
    return (
        <div>
            <h1>hello world asasa</h1>
        </div>
    );
}

export default PublicPage;

我对编程还很陌生.有人能帮我找出为什么没有创建公共页面吗?

如果您需要其他信息来进行故障诊断,请让我知道?

推荐答案

您的CREATE PAGE函数中的post_type参数无效.

如果你有一个定制的帖子类型,你会想要使用slug,否则,在你的例子中,如果我理解正确的话,你想创建一个标准的WordPress页面,帖子类型是page.

function wprk_create_public_page() {
    $page = [
        'post_type' => 'page',
        'post_title' => 'WP React KickOff Public Page',
        'post_content' => 'asasasas',
        'post_status' => 'publish',
        'post_author' => 1,
    ];
    $page_id = wp_insert_post( $page );
    update_post_meta( $page_id, '_wp_page_template', 'wprk-public-page-template.php' );
}

register_activation_hook( __FILE__, 'wprk_create_public_page' );

Reactjs相关问答推荐

如何使用React Router创建响应式主详细信息应用程序?

使用setInterval判断数据的时间,然后在过期后从对象中删除;遇到性能问题

导致类型错误的调度不是函数";

利用OVERPASS API端点计算某建筑的表面积

如何处理具有REACTION-REDUX状态的Nextjs路由警卫

React路由dom布局隐藏内容

在reduce()方法上得到NaN

Firebase查询返回随机用户数据,而不是过滤后的用户数据

添加新行时自动打开可扩展表格(Antd 表格,ReactJS)

使用 React.lazy 调试 webpack 代码拆分

Reactjs 表单未反映提交时的更改

如何从 graphql/apollo 中的缓存中清除多个查询

用 jest 测试包裹在 redux 和 router 中的组件

React Router v6 - 访问嵌套路由和处理手写 url 的正确方法

react 页面更新

react-query、react-hook-form 和表单验证

当父组件重新渲染时做出react ,我失go 了子状态.我错过了什么?

将鼠标悬停在仅适用于该类的第一个实例的 p5.js 类上

如何在按钮左下角制作 Material UI 菜单下拉菜单

Map 函数只返回 Array 中的图像