图库快捷代码菜单顺序修复在WordPress 4.0上不再起作用

时间:2014-09-08 作者:Sarah

我目前使用pmc\\u gallery\\u menu\\u order\\u fix设置库中图像附件的菜单顺序,如下所示:Wordpress 3.5 Gallery Menu Order not set?

有了Wordpress 4.0,我现在在代码的wp\\u update\\u post部分得到了一个无休止的循环。分解它,出现的帖子ID、数组等似乎都工作正常,但当它出现时,更新帖子似乎变得古怪。由于出现无休止的循环,遇到内存不足错误。

是否有其他解决方案可以更新gallery shortcode中附件的menu\\u顺序?

编辑:我在上面引用的原始问题中使用的答案是-https://wordpress.stackexchange.com/a/89370/57313

1 个回复
SO网友:Sarah

我发现对我有用的是用以下代码删除foreach中的操作

function pmc_gallery_menu_order_fix($id) {
    $regex_pattern = get_shortcode_regex();
    preg_match (\'/\'.$regex_pattern.\'/s\', stripslashes($_POST[\'content\']), $regex_matches);
    if ($regex_matches[2] == \'gallery\') :
        $attribureStr = str_replace (" ", "&", trim ($regex_matches[3]));
        $attribureStr = str_replace (\'"\', \'\', $attribureStr);
        $attributes = wp_parse_args ($attribureStr);
    endif;
    $ids = explode(\',\', $attributes[ids]);
    $images = get_posts( array(
    \'post_parent\' => $post->ID,
    \'numberposts\' => \'-1\',
    \'post_status\' => \'inherit\',
    \'post_type\' => \'attachment\',
    \'post_mime_type\' => \'image\',
    \'orderby\' => \'menu_order ID\',
    \'order\' => \'ASC\'
) );
if ( empty($images) ) {
    // no attachments here
} else {
    foreach ( $images as $attachment_id => $attachment ) {
        if (in_array($attachment->ID, $ids)) {
            $update_post = array();
            $update_post[\'ID\'] = $attachment->ID;
            $update_post[\'menu_order\'] = array_search($attachment->ID, $ids);
  //this remove actions breaks the loop
            remove_action(\'pre_post_update\', \'pmc_gallery_menu_order_fix\');
            wp_update_post( $update_post );
        };
    }
}
}

结束

相关推荐

Basic do shortcodes question

我使用WordPress codex页面进行编码。正如您所看到的,我有两个PHP代码。页面能够获得代码的值,但它不遵守CSS规则,我相信这是因为我以错误的方式插入了PHP代码。您能看一下下面的代码并提出问题所在吗?<?php echo do_shortcode(\'[groups_non_member group=\"VPS\"]\' .\"<p class=\'vod-time-price\'>\" . the_field(\'run_t\') . \"MIN | $\". the