wordpress-gutenberg 相关问题

Gutenberg是WordPress的可视化编辑器。标记为wordpress-gutenberg的问题应该与Gutenberg编辑器的使用或修改有关。

升级到 PHP 8.2 和 WP 6.3 后,get_option() 未返回 users_can_register 的 dB 值

我有一个疯狂的错误,我无法弄清楚。我最近升级到 PHP 8.2 和 Wordpress 6.3。大约在同一时间,我试图防止垃圾邮件注册,因此我在登录中添加了 reCaptcha 并

回答 1 投票 0

在 macbook pro 上尝试古腾堡安装错误

我是Gutenberg的新人,最近我正在尝试在我的macbook pro上安装Gutenberg。首先,我更新了npm和node版本。在我的终端中写下这个命令“npx create-guten-block my...

回答 1 投票 0

如何增加古腾堡编辑器、Wordpress 中封面块的宽度?

如何增加WordPress古腾堡编辑器中封面块的宽度?块的背景颜色加宽到全宽,但是块宽度并没有对应宽度加宽...

回答 1 投票 0

在古腾堡编辑器中获取“块“我的插件/块名称”已注册”

我正在尝试创建一个具有多个块和一个管理页面的插件。一切似乎都运转良好。管理页面正在显示,块也正在工作。但我得到了

回答 1 投票 0

Wordpress 块模板不允许引导程序控制响应能力

我正在创建一个Wordpress块主题。我想允许在其所有内置块上设置 WordPress 样式;但是,我在主题中创建的块,我想删除 Wordpress 样式并允许

回答 1 投票 0

Wordpress 不遵循引导样式 - 默认为 Wordpress 样式

我正在开发 WordPress 块主题并创建自定义块模式。我已经加载了 bootstrap,并且 bootstrap 正在根据我放入网站的一些自定义 HTML 进行格式化;然而,...

回答 1 投票 0

使自定义商店的解析无效

我正在尝试清除古腾堡块的存储,并以一定间隔强制每 15 秒获取一次 API。 这就是我获取数据的方式: 常量数据 = useSelect( (选择)=> 选择(

回答 1 投票 0

ACF 块 - 序列化数据

我想通过 wp_insert_post() 函数将数据保存到 ACF 块中。 我的示例数据是一个表,其中“main_text”可能包含换行符、单引号或双引号、链接等 html 标签。 我有一个

回答 1 投票 0

Wordpress 简码在 home.html 中不起作用

我最近设置了一个wordpress页面和插件Email Adress Encode。 我在 3 个位置使用简码设置了编码器: [编码链接=“...”] ... [/编码]。 它工作得很好......

回答 1 投票 0

WordPress Block Editor Gutenberg 里面运行代码! is_admin()

在我的 functions.php 中,我在一个函数中有一些代码,它周围有一个 if (!is_admin) 条件。出于某种原因,当我在管理员中编辑页面时,这种情况下的代码正在运行。它的

回答 0 投票 0

如果选择了一个组,如何创建元素或小部件以获取特定位置的所有组?

如何获取特定位置的所有 ACF 组,然后如果选择了一个组,则使用 AJAX 和 jQuery 获取其字段? 任何人都请帮助我,我将非常感激 如何获取特定位置的所有 ACF 组,然后如果选择了一个组,则使用 AJAX 和 jQuery 获取其字段? 任何人请帮助我,我将非常感激 <?php if ( !defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Elementor_List_Widget extends\ Elementor\ Widget_Base { public function get_name() { return 'elementor-acf-fields'; } public function get_title() { return __( 'acf groups and fields', 'elementor-acf-fields' ); } public function get_icon() { return 'eicon-editor-code'; } public function get_categories() { return [ 'General' ]; } protected function _register_controls() { $all_groups = get_groups(); $get_fields = get_acf_fields(); $this->start_controls_section( 'section_acf_fields', [ 'label' => __( 'ACF Fields', 'elementor-acf-fields' ), ] ); $this->add_control( 'acf_groups', [ 'label' => __( 'ACF Groups', 'elementor-acf-fields' ), 'type' => \Elementor\ Controls_Manager::SELECT, 'groups' => $all_groups, 'default' => '', 'label_block' => true, 'ajax' => [ 'callback' => [ $this, 'get_acf_fields' ], 'event' => 'change', ], ] ); $this->add_control( 'acf_fields', [ 'label' => __( 'ACF Fields', 'elementor-acf-fields' ), 'type' => \Elementor\ Controls_Manager::SELECT, 'options' => $second_variable, 'default' => '', 'label_block' => true, ] ); $this->end_controls_section(); } public function get_acf_fields( $request ) { $group_id = $request[ 'group_id' ]; $fields = []; if ( function_exists( 'acf_get_fields' ) ) { $acf_fields = acf_get_fields( $group_id ); if ( $acf_fields ) { foreach ( $acf_fields as $field ) { $fields[ $field[ 'key' ] ] = $field[ 'label' ]; } } } return [ 'options' => $fields, ]; } public function get_groups() { if ( function_exists( 'acf_get_field_groups' ) ) { $acf_groups = \acf_get_field_groups(); } else { $acf_groups = \apply_filters( 'acf/get_field_groups', [] ); } $specifications_group_id = $acf_groups; // Post ID of the specifications field group. $specifications_fields = array(); $fields = acf_get_fields( $specifications_group_id ); foreach ( $fields as $field ) { $field_value = get_field( $field['name'] ); if ( $field_value && !empty( $field_value ) ) { $specifications_fields[$field['name']] = $field; $specifications_fields[$field['name']]['value'] = $field_value; } } return $specifications_fields; } protected function render() {} } 选择一个选项时,根据其自定义位置在下拉列表中获取所有 acf 组的答案,然后其字段将显示,请参见下面的代码。为此,我创建了名为“jpro_acf_group_select2”的自定义元素控件 <?php /** * Elementor currency control. * * A control for displaying a select field with the ability to choose currencies. * * @since 1.0.0 */ class Elementor_Jobpro_ACF_Group_Select2_Control extends \Elementor\Base_Data_Control { /** * Get currency control type. * * Retrieve the control type, in this case `currency`. * * @since 1.0.0 * @access public * @return string Control type. */ public function get_type() { return 'jpro_acf_group_select2'; } public function enqueue() { //wp_enqueue_script( 'select2', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js', array( 'jquery' ), '4.0.13', true ); wp_register_script( 'elementor-group-scripts', get_plugin_url( '/assets/js/elementor-group-scripts.js'), [ 'jquery-elementor-select2' ], '1.0.0' ); //wp_register_script( 'elementor-group-scripts', get_plugin_url( '/assets/js/elementor-group-scripts.js'), [ 'select2' ], '1.0.0' ); wp_enqueue_script( 'elementor-group-scripts' ); $jobpro_plugin_arr = array( 'site_url' => home_url('/'), 'ajax_url' => home_url('/?jobpro_settings=1'), 'error_msg' => esc_html__('There is some problem.', 'jobpro-employement-verification'), ); wp_localize_script('elementor-group-scripts', 'jobpro_plugin_data', $jobpro_plugin_arr); } public function get_value( $control, $settings ) { if ( isset( $settings[ $control['name'] ] ) ) { $group_item = $settings[ $control['name'] ]; } else { $group_item = $control['default']; } return $group_item; } /** * Render currency control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?> <div class="elementor-control-input-wrapper"> <select id="<?php echo $control_uid; ?>" class="elementor-select2 jobpro-resume-group-select2 {{{ data.class }}}" type="select2"data-setting="{{ data.name }}"> <# var printOptions = function( options ) { _.each( options, function( option_title, option_value ) { #> <?php // If the option title is array of title & icon. ?> <option value="{{ option_value }}">{{{ option_title?.title || option_title }}}</option> <# } ); }; if ( data.groups ) { for ( var groupIndex in data.groups ) { var groupArgs = data.groups[ groupIndex ]; if ( groupArgs.options ) { #> <optgroup label="{{ groupArgs.label }}"> <# printOptions( groupArgs.options ) #> </optgroup> <# } else if ( _.isString( groupArgs ) ) { #> <option value="{{ groupIndex }}">{{{ groupArgs }}}</option> <# } } } else { printOptions( data.options ); } #> </select> </div> <# if ( data.description ) { #> <div class="elementor-control-field-description">{{{ data.description }}} </div> <# } #> <?php } } 下面是它的js和ajax // Wait for the Elementor editor to load jQuery(window).on('elementor:init', function () { // Add custom control JS to the widget edit mode elementor.hooks.addAction('panel/open_editor/widget', function (panel, model, view) { // Check if the current widget is our custom widget if (model.get('widgetType') === 'resume-listings') { jQuery('.jobpro-resume-group-select2').select2({ width: '100%', allowClear: true, placeholder :'Select Group', }); var widgetType = model.get( 'widgetType' ); var settings = model.get('settings'); var $element = jQuery('#elementor-panel-page-editor').find('.jobpro-group-key'); var settings_attributes = settings.attributes; var select_resume_group = settings.attributes.select_resume_group; if(select_resume_group == 'undefined'){ select_resume_group = jQuery('.jobpro-resume-group-select2').val(); } var $fields_element = jQuery('#elementor-panel-page-editor').find('.jobpro-acf-group-fields-select2'); if(select_resume_group){ if ( $element.length ) { $element.val(select_resume_group); } if ( $fields_element.length ) { $fields_element.data('group_item', select_resume_group); jobpro_resume_group_fields_(settings_attributes, $fields_element, select_resume_group); } } jQuery(document).on('change', '.jobpro-resume-group-select2',function (e) { select_resume_group = jQuery(this).val(); $element.val(select_resume_group); $fields_element.data('group_item', select_resume_group); $fields_element.val('').trigger('change'); jobpro_resume_group_fields_(settings_attributes, $fields_element, select_resume_group); }); function jobpro_resume_group_fields_(settings_attributes, $fields_element, select_resume_group){ jQuery.ajax({ type: "GET", dataType: "json", url: jobpro_plugin_data.site_url+'wp-json/wp/v1/jobpro-get-group-fields', data: { search: '', verification_group: select_resume_group, }, success: function(data) { if (data.status == 'success') { $fields_element.find('option:not(:first)').remove(); jQuery.each(data.results, function(index, option) { $fields_element.append(jQuery('<option>').text(option.text).attr('value', option.id)); }); $fields_element.each(function() { var currentElement = jQuery(this); let dropdownName = currentElement.attr('name'); if(dropdownName == 'undefined'){ dropdownName = currentElement.data('setting'); } dropdownName = currentElement.data('setting'); if(dropdownName !== 'undefined'){ var keyValue = settings_attributes[dropdownName]; currentElement.val(keyValue).trigger('change'); } }); } }, error: function(jqXHR, textStatus, errorThrown) { console.error(errorThrown); } }); } $fields_element.select2({ width: '100%', allowClear: true, placeholder :'Select Group Fields', //minimumInputLength: 3, tags: false, ajax: { data: function (params) { if ( select_resume_group.length < 1 || select_resume_group == 'undefined') { select_resume_group = jQuery('.jobpro-resume-group-select2').val(); } var query = { search: params.term, verification_group: select_resume_group } return query; }, url: jobpro_plugin_data.site_url+'wp-json/wp/v1/jobpro-get-group-fields', dataType: 'json', cache: true, } }); } }); }); 下面是ajax public function jobpro_load_group_fields(){ $search = !empty($_GET['search']) ? sanitize_text_field($_GET['search']) : ''; $verification_group = !empty($_GET['verification_group']) ? sanitize_text_field($_GET['verification_group']) : ''; $acf_group_object = get_field_object($verification_group); $verification_group_fields = !empty($acf_group_object['sub_fields']) ? $acf_group_object['sub_fields'] : ''; $responsedata = array(); $responsedata['status'] = 'success'; $responsedata['results'] = array(); foreach ($verification_group_fields as $field) { $name = isset($field['name']) ? $field['name'] : ''; $label = isset($field['label']) ? $field['label'] : ''; $responsedata['results'][] = array('id' => $name, 'text' => $label); } wp_send_json($responsedata); }

回答 1 投票 0

Gutenbrg 特色图片视觉错误

我正在本地 wordpress 中创建一个站点。我的问题是,每当我在后端的 gutenberg 特色图片中添加图片时,我的 GUI 就会完全被窃听。我注意到这只发生在图片...

回答 0 投票 0

Gutenberg:如何限制 InnerBlocks 中的块数

const innerBlocksCount = innerBlocks.length; 如果(innerBlocksCount > allowedBlocksCount){ innerBlocks.slice(0, allowedBlocksCount); 返回 ( const innerBlocksCount = innerBlocks.length; if (innerBlocksCount > allowedBlocksCount) { innerBlocks.slice(0, allowedBlocksCount); return ( <InnerBlocks renderAppender={() => false} innerBlocks={innerBlocks} /> ); 我正在尝试为 wordpresss 中的列块克隆,用户将选择 1 或 2 或 3 个块放入,我的块工作正常但是当用户放入 3 个块然后选择 1 时,我想要要删除的最后 2 个块, 我试过好几样东西,怎么才能达到那样的效果

回答 0 投票 0

如何在 Wordpress 的单个帖子中显示摘录?

我怀疑如何在标题 H1 下方的单个帖子中显示摘录。这是可能的,我该怎么做?我尝试了 Astra、Suki 和 Twenty Twenty One 主题,但没有

回答 0 投票 0

我无法将 gif 上传到 Wordpress 帖子

当我将 gif 上传到帖子时,它在实时网站上显示为静态图像。图片上传器中没有“全尺寸”选项。我还尝试更改我的默认 wordpress 选项...

回答 0 投票 0

函数 dynamic_sidebar() 根本不起作用

我正在开发一个 WordPress 主题,我需要将小部件添加到我的标题部分,所以我在我的 functions.php 中使用了 register_sidebar(): 函数 my_theme_add_widget_support() { register_sidebar(到达...

回答 1 投票 0

仅在 WooCommerce 中为某些产品覆盖“单一产品”块模板

我有几个产品,我需要呈现另一个块模板而不是 single-product.html,即 single-product-custom.html。 问题是,似乎没有类似的逻辑来选择

回答 1 投票 0

WordPress - 图片标题存在 - Gutenberg 不会自动获取它

在问这个问题之前,我从上午 10:00 到晚上 20:00 支付了 9 个小时 :( 我尝试了一切......但没有运气。 好吧,我已经设置了图像的信息:替代文本、标题、标题、描述

回答 1 投票 0

限制 WordPress 核心列块中的列数

我想在 WordPress Gutenberg 的核心列块中将列数限制为三。 期望结果 - WP 管理员在添加列时不允许来自 RangeController 的三列以上 ...

回答 1 投票 0

在为 wordpress 帖子保存元字段后,是否有更新帖子元模式的方法

我已经在 register_post_meta 函数中注册了一个名为 project_description 的后元字段,它是显式的“模式”。以下是 register_post_meta 函数—— 功能

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.