gpt4 book ai didi

wordpress - 在自定义帖子类型内的自定义分类上用下拉选择器替换层次结构复选框

转载 作者:行者123 更新时间:2023-12-02 23:41:04 25 4
gpt4 key购买 nike

我看过几篇关于此主题的博客文章,但未能成功实现。

我尝试了以下方法(也许其中之一是解决方案,但我有点偏离):

  1. https://pagecrafter.com/dropdown-menu-of-all-terms-in-custom-taxonomy-wordpress/
  2. Wordpress - taxonomy dropdown is not working with hierarchical
  3. https://www.noelsheppard.co.uk/create-dropdown-list-custom-taxonomy-terms/ (基本上是示例1)
  4. https://shibashake.com/wordpress-theme/wordpress-custom-taxonomy-input-panels
  5. 最后,请阅读 this

我有一个属性 CPT,它具有三个自定义分类法:

  1. guest
  2. 房间
  3. 城市(城市分类法通过自定义函数填充,该函数监视第二个 CPT [目的地] 创建新帖子的时间,并将与分类法相同的名称添加到属性城市条目中)

我想确保在创建特性帖子并设置其城市时仅选择一个城市(目的地)。我想使用下拉菜单来执行此操作。

按照上面的第一个(或第三个)链接示例,我尝试了以下实现:

在我的functions.php中初始化的函数:

// Creates dropdown taxonomy select for guest taxonomy in Properties.
function dropdown_tax_init(){

$categories = get_categories('taxonomy=city');
$select = "<select name='cat' id='cat' class='top-tags-dropdown'>n";
$select .= "<option value='-1'>Select Tag</option>n";
foreach ($categories as $category) {
if ($category->count > 0) {
$select .= "<option value='" . $category->slug . "'>" . $category->name . "</option>";
}
}
$select .= "</select>";
echo $select;

}

add_action( 'init', 'dropdown_tax_init' );

我还通过我的functions.php调用js,如下所示:

function admin_footer_script() {
wp_register_script('dropdown_tax_script', get_template_directory_uri() . '/js/taxonomy-dropdown.js', array('jquery'), '1.0.0'); // Conditional script(s)
wp_enqueue_script('dropdown_tax_script'); // Enqueue it!
}

add_action( 'admin_footer', 'admin_footer_script' );

最后,我的js如下:

var dropdown = document.getElementById("cat");

function onCatChange() {
if (dropdown.options[dropdown.selectedIndex].value != -1) {
location.href = "<?php echo home_url();?>/city/" + dropdown.options[dropdown.selectedIndex].value + "/";
}
}
dropdown.onchange = onCatChange;

我的 JavaScript 显示在管理页脚的检查中。

下拉列表在加载时闪烁,但当我的 function.php 中有该函数时,自定义分类法不会加载,某些东西破坏了古腾堡编辑器右侧栏中自定义分类法的加载。他们从不出现。

很高兴了解更多详细信息,谢谢。

最佳答案

不确定这是否是主要原因,但无论如何你不能像这样从 Javascript 中执行 PHP 代码:

location.href = "<?php echo home_url();?>/city/" + '...';

这会导致无效的 url 并导致重定向失败。如果您需要将一些值从 PHP 传输到 JS,请使用 wp_localize_script() 函数。查看详情here .

要调试其他潜在问题,您需要执行一些单独的测试:

  1. PHP 端。确保您的 $categories 数组不为空并且具有非空类别,或者只需检查 $select 输出(目前不执行任何相关的 JS)。<
  2. JS 端。将 onCatChange() 的每次调用记录到控制台,以确保 onchange 事件:a) 正确触发,2) 不是由其他原因触发(例如,在旧版 IE 中失去焦点或其他棘手的意外情况)。然后记录分配给 location.href 的字符串值,并确保它没有损坏并且是有效的 url。

其他提示:

  • 始终转义您的输出($category->slug$category->name - 它们并不总是可靠,有时可能会破坏您的标记);<
  • 在字符串中插入换行符时可能漏掉了反斜杠:应该是 \n,而不仅仅是 n
  • 如果您调用具有依赖项 array('jquery') 的脚本,请随意使用 jQuery,而不是普通 JavaScript。这可以帮助您避免跨浏览器问题。

希望这有帮助。

关于wordpress - 在自定义帖子类型内的自定义分类上用下拉选择器替换层次结构复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com