【问题标题】:How to edit wordpress plugin .php file如何编辑 wordpress 插件 .php 文件
【发布时间】:2016-07-29 05:56:07
【问题描述】:

我在我的网站上安装了 Front-End Publishing 插件,它会显示以下菜单: FEP menu

  • 我想从菜单中删除“标签”和“选择特色图片”选项。
  • 由于我希望用户为帖子内容上传媒体,我还想阻止用户在内容框中输入单词。

这是插件的submission-form.php 我必须编辑什么代码来实现这个? (我尝试将所有代码都放入代码格式但部分代码拒绝放入代码示例框中)

<?php
$post       = false;
$post_id    = -1;
$featured_img_html = '';
if( isset($_GET['fep_id']) && isset($_GET['fep_action']) && $_GET['fep_action'] == 'edit' ){
    $post_id            = $_GET['fep_id'];
    $p                  = get_post($post_id, 'ARRAY_A');
    if($p['post_author'] != $current_user->ID) return 'You don\'t have permission to edit this post';
    $category           = get_the_category($post_id);
    $tags               = wp_get_post_tags( $post_id, array( 'fields' => 'names' ) );
    $featured_img       = get_post_thumbnail_id( $post_id );
    $featured_img_html  = (!empty($featured_img))?wp_get_attachment_image( $featured_img, array(200,200) ):'';
    $post               = array(
                            'title'             => $p['post_title'],
                            'content'           => $p['post_content'],
                            'about_the_author'  => get_post_meta($post_id, 'about_the_author', true)
                        );
    if(isset($category[0]) && is_array($category))
        $post['category']   = $category[0]->cat_ID;
    if(isset($tags) && is_array($tags))
        $post['tags']       = implode(', ', $tags);
}
?>
此表单需要 JavaScript 才能正常运行。请打开 JavaScript 并重试!
<div id="fep-new-post">
<div id="fep-message" class="warning"></div>
<form id="fep-submission-form">
    <label for="fep-post-title">Title</label><br/>
    <input type="text" name="post_title" id="fep-post-title" value="<?php echo ($post) ? $post['title']:''; ?>"><br/>
    <label for="fep-post-content">Content</label><br/>
    <?php
        $enable_media = (isset($fep_roles['enable_media']) && $fep_roles['enable_media'])?current_user_can($fep_roles['enable_media']):1;
        wp_editor( $post['content'], 'fep-post-content', $settings = array('textarea_name'=>'post_content', 'textarea_rows'=> 7, 'media_buttons'=>$enable_media) );
        wp_nonce_field('fepnonce_action','fepnonce');
    ?>
    <?php if(!$fep_misc['disable_author_bio']): ?>
        <label for="fep-about">Author Bio</label><br/>
        <textarea name="about_the_author" id="fep-about" rows="5"><?php echo ($post) ? $post['about_the_author']:''; ?></textarea><br/>
    <?php else: ?>
        <input type="hidden" name="about_the_author" id="fep-about" value="-1">
    <?php endif; ?>
    <label for="fep-category">Category</label><br/>
    <?php wp_dropdown_categories(array('id'=>'fep-category', 'hide_empty' => 0, 'name' => 'post_category', 'orderby' => 'name', 'selected' => $post['category'], 'hierarchical' => true, 'show_option_none' => __('None'))); ?><br/>
    <label for="fep-tags">Tags</label><br/>
    <input type="text" name="post_tags" id="fep-tags" value="<?php echo ($post) ? $post['tags']:''; ?>"><br/>
    <div id="fep-featured-image">
        <div id="fep-featured-image-container"><?php echo $featured_img_html; ?></div>
        <a id="fep-featured-image-link" href="#">Choose Featured Image</a>
        <input type="hidden" id="fep-featured-image-id" value="<?php echo (!empty($featured_img))?$featured_img:'-1'; ?>"/>
    </div>
    <input type="hidden" name="post_id" id="fep-post-id" value="<?php echo $post_id ?>">
    <button type="button" id="fep-submit-post" class="active-btn">Submit</button><img class="fep-loading-img" src="<?php echo plugins_url( 'static/img/ajax-loading.gif', dirname(__FILE__) ); ?>"/>
</form>

【问题讨论】:

    标签: php html wordpress frontend


    【解决方案1】:

    对于问题 #1:

    为这些元素添加一个类(我已将类称为removal)

    <label for="fep-tags" class="removal">Tags</label><br/>
    <input type="text" name="post_tags" class="removal" id="fep-tags" value="<?php echo ($post) ? $post['tags']:''; ?>"><br/>
    <div class="removal" id="fep-featured-image">
        <div id="fep-featured-image-container"><?php echo $featured_img_html; ?></div>
        <a id="fep-featured-image-link" href="#">Choose Featured Image</a>
        <input type="hidden" id="fep-featured-image-id" value="<?php echo (!empty($featured_img))?$featured_img:'-1'; ?>"/>
    </div>
    

    为您的主题添加自定义 CSS:

    .removal{
      display:none !important;
    }
    

    对于第 2 个问题:

    你可以做两件事。您可以通过在 CSS 中完全移除 textarea 来完全移除用户输入文本的能力:

    #fep-about{
      display:none !important;
    }
    

    如果出于某种原因您确实需要文本框(不知道为什么)。我会添加自定义 Javascript 来检测用户是否输入了密钥或复制并粘贴了任何文本。考虑到textarea元素的ID是fep-about:

    var ele = document.getElementById('fep-about')
    
    ele.addEventListener('keyup',function(){
      this.value = "";
      alert("Only direct media uploads are allowed!");
    });
    
    ele.addEventListener('onchange',function(){
      this.value = "";
      alert("Only direct media uploads are allowed!");
    });
    

    这是 JSFiddle:https://jsfiddle.net/a3zsdo88/1/

    兼容性问题

    如果在覆盖上述问题的 CSS 类中存在某种问题,只需将显示语句添加到元素内:

    <div id="fep-featured-image" style="display:none !important;">
        <div id="fep-featured-image-container"><?php echo $featured_img_html; ?>  </div>
        <a id="fep-featured-image-link" href="#">Choose Featured Image</a>
        <input type="hidden" id="fep-featured-image-id" value="<?php echo (!empty($featured_img))?$featured_img:'-1'; ?>"/>
    </div>
    

    看看我是如何将 display 语句添加到父元素的。对您不想显示的元素执行此操作。

    如果您无法轻松自定义 Javascript,请直接在表单文件的 HTML 中添加 &lt;script&gt;&lt;/script&gt; 块。

    <script>
    
       var ele = document.getElementById('fep-about')
    
       ele.addEventListener('keyup',function(){
         this.value = "";
         alert("Only direct media uploads are allowed!");
       });
    
       ele.addEventListener('onchange',function(){
         this.value = "";
         alert("Only direct media uploads are allowed!");
       });
    
    </script>
    

    【讨论】:

    • 非常感谢您的回答,但我似乎在这里做错了什么。我在 FEP 插件提交 form.php 的底部添加了代码 1。我在 CSS 样式表编辑器中添加了代码 2,3 和 4。但是我的 fep 提交表单上没有任何变化。我也尝试过停用和重新激活插件。如果需要,我可以让您访问我网站上的后端。再次感谢:)
    • 代码 4 是 Javascript。不是 CSS。您需要将其添加到您可以添加自定义 Javascript 的模板的位置。首先这样做,然后让我知道会发生什么。不要提议让任何人访问您的网站!
    • 所以我一直在 Google 上搜索如何“将其添加到您可以添加自定义 Javascript 的模板的位置”,但结果为空。我应该把代码4放在哪里?我应该安装一个插件来添加自定义 Javascript 吗?
    • 查看我的更新。您可能必须直接在 HTML 文件中进行更改。
    • 好消息,我听从了您的建议,现在“标签”和“选择特色”选项消失了。但是随着一个问题的解决,另一个问题出现了……最后的“提交”发布按钮神秘地消失了。我提交的 form.php 中的代码在这里codeshare.io/NUSLy 除此之外,我仍然不知道您所说的“如果您无法轻松自定义 Javascript,则添加 是什么意思直接在表单文件中的 HTML 中阻止。我需要更多的解释。感谢您的宝贵时间,我真的很感激。
    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 2023-02-24
    • 2023-03-23
    • 2016-05-01
    • 2014-03-06
    • 2023-04-09
    • 2017-04-11
    • 2017-08-16
    相关资源
    最近更新 更多