1

考虑过询问 wordpress 的答案,但他们会告诉我这是一个“插件”。如果您不同意,请随时将其传递给他们。

我在我的 functions.php 中使用此代码,当用户单击新发布按钮时,它会提供可用类别的下拉菜单。这迫使他们在创建新的空白帖子之前选择一个类别。

问题是我收到“无效的帖子类型”错误,并将其追溯到一个名为“adminimizer”的插件。

新帖子永远不会被创建,地址栏卡在 mysite.com/wp-admin/post-new.php?category_id%5B%5D=4&continue=Continue&post_type= (它应该在 type=..我收到一个错误框,上面写着“无效的帖子类型”。

我很想听听为什么我的剧本可能没有完成的任何想法。这是我正在使用的代码:

//ADD DROPDOWN MENU TO CHOOSE NEW POST CATEGORY (CHOOSE THE CAT ID’S YOU WANT TO APPEAR)
add_filter( 'load-post-new.php', 'wpse14403_load_post_new' );
function wpse14403_load_post_new()
{
$post_type = 'post';
if ( isset( $_REQUEST['post_type'] ) ) {
    $post_type = $_REQUEST['post_type'];
}

// Only do this for posts
if ( 'post' != $post_type ) {
    return;
}

if ( array_key_exists( 'category_id', $_REQUEST ) ) {
    add_action( 'wp_insert_post', 'wpse14403_wp_insert_post' );
    return;
}

// Show intermediate screen
extract( $GLOBALS );
$post_type_object = get_post_type_object( $post_type );
$title = $post_type_object->labels->add_new_item;

include( ABSPATH . 'wp-admin/admin-header.php' );

$dropdown = wp_dropdown_categories( array(

'orderby'            => 'name',
'include' => '3, 4',
    'name' => 'category_id[]',
    'hide_empty' => false,
    'echo' => false,
) );

$category_label = __( 'Create New' );
$continue_label = __( 'Continue' );
echo <<<HTML
<div class="wrap">

<h2>{$title}</h2>

<form method="get">
    <table class="orange">
        <tbody>
            <tr valign="top">
                <th scope="row">{$category_label}</th>
                <td>{$dropdown}</td>
            </tr>
            <tr>
                <td></td>
                <th><input name="continue" type="submit" class="button-primary" value="  {$continue_label}" /></th>
        </tbody>
    </table>
    <input type="hidden" name="post_type" value="{$post_type}" />
   </form>
</div>
HTML;
include( ABSPATH . 'wp-admin/admin-footer.php' );
exit();
}

// This function will only be called when creating an empty post,
// via `get_default_post_to_edit()`, called in post-new.php
function wpse14403_wp_insert_post( $post_id )
{
wp_set_post_categories( $post_id, $_REQUEST['category_id'] );
}

更新/更多信息。在进一步调查中,我将我的一些代码从隐藏更改为文本。这会显示一个输入字段,该字段通常会自动填充帖子类型“post”。adminimize 插件似乎可以防止这种情况发生,即使我没有将它设置为隐藏任何东西?

<input type="text" name="post_type" value="{$post_type}" />

我想简单的解决方案就是不要使用管理器插件,但是对于新网站所有者来说,保持简单是非常有用的。我已经向插件作者询问过这个问题,但不要指望很快就会得到答案 - 谢谢

4

1 回答 1

0

事实证明,插件作者(Frank)提供了很大的支持。他发现这条线有问题,并简单地将其注释掉。现在一切都按预期工作:)

//extract( $GLOBALS );
于 2012-11-09T08:27:20.363 回答