将归档页面插件重写为不同于自定义POST类型插件

时间:2015-07-08 作者:Dallas Huggins

我在更改存档页的slug时遇到问题。目标是创建一个可以使用slug从WP后端编辑的页面speakers, 但这已经被存档页面所采用。这必须是客户端友好的,因此它不能仅在php中可编辑。我愿意做任何人认为最好的事情。

想法:

一起删除存档页,将slug重写为speakerpresenter, 这样我就可以创建一个带有speakers slug使存档页可编辑有人对此有想法吗?我创建了一个自定义帖子类型,并尝试设置has_archivefalse 创建一个slug阵列,但没有成功。如果您将其设置为“false”,它会提取一个常规帖子列表。

非常感谢。

1 个回复
SO网友:Tom J Nowell

有一种更简单的方法,根本不必为页面操心。

相反,将内容存储在选项或主题模块中,并使用设置API/customiser编辑内容。

转动textarea 将表单中的内容保存到完整编辑器中,使用wp_editor 函数获取所见即所得编辑器,其外观和工作方式与编辑页面屏幕类似。使用get_optionget_theme_mod 检索前端上的内容,并通过the_content 筛选要使用的oembeds短代码和段落。

例如,下面是如何将可编辑页脚内容区域添加到自定义程序(taken from here )

add_action( \'customize_register\', \'your_customizer\' );
function your_customizer( $wp_customize ) {

    $wp_customize->add_section(
        \'appearance_settings\',
        array(
            \'title\' => __(\'Appearance Settings\'),
            \'description\' => __(\'Modify design options\'),
            \'priority\' => 120,
        )
    );


    $wp_customize->add_setting( \'footer_content\',
        array(
            \'default\'=>\'default text\'
        ));

    $wp_customize->add_control(
        new Example_Customize_Editor_Control(
            $wp_customize,
            \'footer_content\',
            array(
                \'label\' => \'Footer content\',
                \'section\' => \'appearance_settings\',
                \'settings\' => \'footer_content\'
            )
        )
    );
}
以下是编辑器内容控件:

if(class_exists(\'WP_Customize_Control\')){

    class Example_Customize_Editor_Control extends WP_Customize_Control {
        public $type = \'textarea\';

        public function render_content() {
            ?>
            <label>
                <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>

                <?php

                $content = $this->value();
                $editor_id = $this->id;
                $settings = array( \'media_buttons\' => true, \'drag_drop_upload\'=>true );

                wp_editor( $content, $editor_id, $settings );

                ?>
            </label>
        <?php
        }
    }
}
以下是一些用于更新预览窗格的JS:

jQuery(document).ready(function($){
    $(\'textarea[name="footer_content"]\').attr(\'data-customize-setting-link\',\'footer_content\');

    setTimeout(function(){

        var editor2 = tinyMCE.get(\'footer_content\');


        if(editor2){
            editor2.onChange.add(function (ed, e) {
                // Update HTML view textarea (that is the one used to send the data to server).

                ed.save();

                $(\'textarea[name="footer_content"]\').trigger(\'change\');
            });
        }
    },1000);
})
下面是一些PHP来加载js:

function your_customize_backend_init(){

    wp_enqueue_script(\'your_theme_customizer\', get_template_directory_uri.\'/customizer/customizer.js\');
}
add_action( \'customize_controls_enqueue_scripts\', \'your_customize_backend_init\' );

结束

相关推荐

How to display CPT archives?

我有一个网站,我们合并了两个博客,一个在普通博客中,另一个在自定义帖子类型中。一切都很好,只是我们无法为CPT显示月度档案。我们尝试了各种各样的插件,无论我们得到什么样的常规博客帖子列表,我们都会被重定向到那里。我们启用了has\\u存档,那么我们缺少什么呢?我从未尝试合并两个博客,所以这有点困难。但在普通博客上,第一个归档文件也显示了26篇文章,但当你访问它时,什么都没有显示。其他月份可以吗?Problem BlogRegular Blog

将归档页面插件重写为不同于自定义POST类型插件 - 小码农CODE - 行之有效找到问题解决它

将归档页面插件重写为不同于自定义POST类型插件

时间:2015-07-08 作者:Dallas Huggins

我在更改存档页的slug时遇到问题。目标是创建一个可以使用slug从WP后端编辑的页面speakers, 但这已经被存档页面所采用。这必须是客户端友好的,因此它不能仅在php中可编辑。我愿意做任何人认为最好的事情。

想法:

一起删除存档页,将slug重写为speakerpresenter, 这样我就可以创建一个带有speakers slug使存档页可编辑有人对此有想法吗?我创建了一个自定义帖子类型,并尝试设置has_archivefalse 创建一个slug阵列,但没有成功。如果您将其设置为“false”,它会提取一个常规帖子列表。

非常感谢。

1 个回复
SO网友:Tom J Nowell

有一种更简单的方法,根本不必为页面操心。

相反,将内容存储在选项或主题模块中,并使用设置API/customiser编辑内容。

转动textarea 将表单中的内容保存到完整编辑器中,使用wp_editor 函数获取所见即所得编辑器,其外观和工作方式与编辑页面屏幕类似。使用get_optionget_theme_mod 检索前端上的内容,并通过the_content 筛选要使用的oembeds短代码和段落。

例如,下面是如何将可编辑页脚内容区域添加到自定义程序(taken from here )

add_action( \'customize_register\', \'your_customizer\' );
function your_customizer( $wp_customize ) {

    $wp_customize->add_section(
        \'appearance_settings\',
        array(
            \'title\' => __(\'Appearance Settings\'),
            \'description\' => __(\'Modify design options\'),
            \'priority\' => 120,
        )
    );


    $wp_customize->add_setting( \'footer_content\',
        array(
            \'default\'=>\'default text\'
        ));

    $wp_customize->add_control(
        new Example_Customize_Editor_Control(
            $wp_customize,
            \'footer_content\',
            array(
                \'label\' => \'Footer content\',
                \'section\' => \'appearance_settings\',
                \'settings\' => \'footer_content\'
            )
        )
    );
}
以下是编辑器内容控件:

if(class_exists(\'WP_Customize_Control\')){

    class Example_Customize_Editor_Control extends WP_Customize_Control {
        public $type = \'textarea\';

        public function render_content() {
            ?>
            <label>
                <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>

                <?php

                $content = $this->value();
                $editor_id = $this->id;
                $settings = array( \'media_buttons\' => true, \'drag_drop_upload\'=>true );

                wp_editor( $content, $editor_id, $settings );

                ?>
            </label>
        <?php
        }
    }
}
以下是一些用于更新预览窗格的JS:

jQuery(document).ready(function($){
    $(\'textarea[name="footer_content"]\').attr(\'data-customize-setting-link\',\'footer_content\');

    setTimeout(function(){

        var editor2 = tinyMCE.get(\'footer_content\');


        if(editor2){
            editor2.onChange.add(function (ed, e) {
                // Update HTML view textarea (that is the one used to send the data to server).

                ed.save();

                $(\'textarea[name="footer_content"]\').trigger(\'change\');
            });
        }
    },1000);
})
下面是一些PHP来加载js:

function your_customize_backend_init(){

    wp_enqueue_script(\'your_theme_customizer\', get_template_directory_uri.\'/customizer/customizer.js\');
}
add_action( \'customize_controls_enqueue_scripts\', \'your_customize_backend_init\' );

相关推荐

如何将Page-{slug}.php这样的页面模板文件移到子目录中?

我想移动页面模板文件,如page-{slug}.php 到我的主题中的子目录,WordPress将自动识别它们。如果所述表单的页面模板在子目录中不存在,那么WordPress应该回到默认的模板加载规则。我如何才能做到这一点?Note-1: This 对于页面模板和this 链接提及template-parts/page, 这不是一回事。Note-2: 我有多个page-{slug}.php 像页面模板文件一样,我想将它们移动到子目录中,以获得更整洁的文件组织。